1

main2つのファイルを含むという名前のディレクトリがあります。コンテンツとしてalex.txtのみ持つという名前のテキストファイルと、。を持つという名前の別のファイルです。100mark.txt400

ディレクトリに移動する関数を作成し、すべてのファイル名とそのファイルの内容を取得して(dictに?)保存したいと思います。したがって、最終結果は次のようになります。

({'alex.txt', '100'}, {'mark.txt', '400'})

大量のファイルに対してこれを行うための最良の方法は何でしょうか?

4

3 に答える 3

6

これは良い仕事のように見えますos.walk

d = {}
for path,dirs,fnames in os.walk(top):
    for fname in fnames:
        visit = os.path.join(path,fname)
        with open(visit) as f:
             d[visit] = f.read()

このソリューションは、サブディレクトリが存在する場合は、サブディレクトリにも再帰しま​​す。

于 2012-09-25T13:08:22.540 に答える
2

辞書を使うのは道のりのようです。

を使用os.listdirして、内のファイルのリストを取得できますdirectory。次に、ファイルを繰り返し処理し、各ファイルを開いて入力を読み取り、辞書に保存します。

mainディレクトリにいくつかのサブディレクトリがある場合は、関数を使用してそれらos.walkを再帰的に処理することをお勧めします。そうでなければ固執しos.listdirます。

の項目os.listdirはに関連していることに注意してくださいmainmainファイルを開く前に、へのパスを追加することをお勧めします。その場合は、の項目であるos.path.join(path_to_main, f)whereを使用します。fos.listdir

于 2012-09-25T13:08:11.453 に答える
1
import os
bar = {}
[bar.update({i: open(i, 'r').read()}) for i in os.listdir('.')]

または(mgilson経由)

bar = dict( (i,open(i).read()) for i in os.listdir('.') )
于 2012-09-25T13:11:31.143 に答える