3

ディレクトリを反復処理して、2 つのファイル名を別の python プログラムまたは作成した関数に渡すにはどうすればよいですか?

以下は、ディレクトリを反復処理してファイルを一覧表示する出力を含む現在のスクリプトです。同じ8文字のプレフィックスを持つ2つのファイルを、2つのファイルをパラメーターとして受け取る、作成した別の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 に答える