我有一個名爲main
的目錄,其中包含兩個文件:名爲alex.txt
的文本文件,其中只有100
作爲其內容,而另一個名爲mark.txt
的文件具有400
。如何獲取整個目錄的文件名和內容?
我想創建一個函數,將進入目錄,並採取每個文件名和該文件的內容,並將它們存儲(字典?)。所以最終的結果看起來是這樣的:
({'alex.txt', '100'}, {'mark.txt', '400'})
對於大量文件這樣做的最佳方式是什麼?
我有一個名爲main
的目錄,其中包含兩個文件:名爲alex.txt
的文本文件,其中只有100
作爲其內容,而另一個名爲mark.txt
的文件具有400
。如何獲取整個目錄的文件名和內容?
我想創建一個函數,將進入目錄,並採取每個文件名和該文件的內容,並將它們存儲(字典?)。所以最終的結果看起來是這樣的:
({'alex.txt', '100'}, {'mark.txt', '400'})
對於大量文件這樣做的最佳方式是什麼?
這看起來像一個好工作爲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()
該解決方案也將遞歸到子目錄如果它們存在。
使用字典看起來像要走的路。
您可以使用os.listdir
獲取directory
中的文件列表。然後,迭代文件,打開它們中的每一個,閱讀它的輸入並將它們存儲在字典中。
如果您的main
目錄有一些子目錄,您可能需要使用os.walk
函數遞歸處理它們。否則堅持os.listdir
。
請注意,os.listdir
的一項與main
相關。打開文件之前,您可能需要將路徑添加到main
。在這種情況下,請使用os.path.join(path_to_main, f)
,其中f
是os.listdir
的一個項目。
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('.'))
是你有沒有要陷入任何子目錄? – tMC
@tMC - 不,沒有。 – user1447941