在Python脚本中使用glob两次
我编写了一个Python脚本,用于绘制来自两个不同文件的数据。我有几对文件需要在上面运行这个脚本。(假设“几对”可能意味着数千对)在一个类似的脚本中,我使用了glob.glob并获得了巨大成功。在这种情况下,我想做一些类似的事情 我的问题有两个方面:在Python脚本中使用glob两次,python,glob,Python,Glob,我编写了一个Python脚本,用于绘制来自两个不同文件的数据。我有几对文件需要在上面运行这个脚本。(假设“几对”可能意味着数千对)在一个类似的脚本中,我使用了glob.glob并获得了巨大成功。在这种情况下,我想做一些类似的事情 我的问题有两个方面: 是否需要为每个glob.glob定义单独的函数 我是否可以将第二个glob.glob嵌套在我在单个数据文件案例中使用的for循环中,如图所示 def process_file(my_file): (# The body of my code...
def process_file(my_file):
(# The body of my code... not relevant, and not something I can share.
if __name__=='__main__':
import glob
for f in glob.glob(file_directory + "*_data.dat"):
process_file(f)
print f
我只做了几个月的编程,所以这是我第一次不得不做这么异国情调的事情。任何建议都将不胜感激 尝试回答您的问题 “是否需要为每个glob.glob定义单独的函数?” 这取决于您是否需要对这两种类型的文件执行相同的操作?在这种情况下,只需使用相同的函数即可。否则,如果操作完全不同,则应具有两个不同的函数 如果操作基本相同,则可以使用一个函数,但使用参数说明要传递的文件类型,例如:
def process_file(file_path, file_type):
# mostly the same stuff
...
if file_type == 'a':
# something different
“我可以将第二个glob.glob嵌套在我在单个数据文件案例中使用的for循环中吗,如图所示?”
你可以。假设这对文件的文件名有些关联,您可能会有如下内容:
for f_a in glob.glob(file_directory + "*_data_a.dat"):
process_file(f_a, 'a')
for f_b in glob.glob(file_directory + f_a[:-11] + "_data_b.dat"):
# we only ever expect to find one item to loop over here though
process_file(f_b, 'b')
但在这种情况下,内部的球体是没有意义的。。。我们已经在python代码中构建了整个文件名,只需执行以下操作:
for f_a in glob.glob(file_directory + "*_data_a.dat"):
process_file(f_a, file_type='a')
process_file(file_directory + f_a[:-11] + "_data_b.dat", file_type='b')
严格地说,内部glob做了比上面更多的事情,它告诉你第二个文件存在。因此,我们可以通过以下方式恢复这种行为:
import os
for f_a in glob.glob(file_directory + "*_data_a.dat"):
process_file(f_a, file_type='a')
f_b = file_directory + f_a[:-11] + "_data_b.dat"
if os.path.isfile(f_b):
process_file(f_b, file_type='b')
现在还不清楚你想做什么。与任何其他函数一样,您可以使用
glob.glob()
任意次数。请创建一个MCVE来更好地说明您想要做什么。@MattDMo我没有时间创建MCVE。我只需要知道是否可以在for循环中使用glob.glob(),以及是否需要为每个glob.glob()定义单独的函数。这似乎是一个相当普遍的问题,而不是一个需要举例说明的问题。@Palmetto_Girl86:就这么做吧。如果它不起作用,那么你可以开始问一些问题,比如为什么它不起作用,或者如何使它起作用。StackOverflow上的人通常不会对回答问题感兴趣,你可以通过运行代码自己回答问题。@BrenBarn很高兴知道!我将来会记得StackOverflow对新来者没有帮助。。。在花时间写一个关于“它会工作吗”的问题之前,试着运行代码会快得多。谢谢!这就是我一直在寻求的帮助。我开始明白为什么我尝试的是错误的。谢谢你提供指导。这正是我要找的!