3

如何遍历目录并将两个文件名传递给我编写的另一个 python 程序或函数?

下面是我当前的脚本,它带有一些输出,它遍历一个目录并列出文件。我想一次将两个具有相同 8 个字符前缀的文件传递给我编写的另一个 python 程序或函数,它将这两个文件作为参数。

我需要在脚本中添加什么来添加此功能?

# Process 1. Iterate clean directory
os.chdir('/Applications/XAMPP/xamppfiles/htdocs/cleaned_files')
D = {}
fnames = os.listdir(".")
for fname in fnames:
    print(fname)
    date = fname[0:8] # this extracts the first 8 characters, aka: date
    if date not in D:
        D[date] = []
    print D

上述脚本的输出

2012_06_Log.csv
2012_06_Summary.csv
2012_07_Log.csv
2012_07_Summary.csv

{'2012_07_': [], '2012_06_': []}
4

1 回答 1

1

Adefaultdict在这里会有所帮助:

from collections import defaultdict
d = defaultdict(list)
for fname in fnames:
    date = fname[0:8] 
    d[date].append(fname)

现在遍历字典值并用于itertools.combinations获取与每个键相关的所有对:

from itertools import combinations
for f in d.values():
    for f1, f2 in combinations(f, 2):
        #call your function and pass f1, f2

对您的代码的简单修复将是:

D = {}
fnames = os.listdir(".")
for fname in fnames:
    print(fname)
    date = fname[0:8]
    if date not in D:
        D[date] = []
    D[date].append(fname)
    #or use: `D.setdefault(date, []).append(fname)`

然后应用该itertools.combinations部分。

于 2013-11-10T18:42:23.607 回答