我有一個包含4個文本文件的文件夾。我想編程一個代碼,我可以檢查文件夾中文件的大小,只打開那些大小相同的代碼。任何人有任何想法?如何用python檢查目錄中文件的大小?
我已經嘗試過這種
import os
d=os.stat('H:/My Documents/211').st_size
我有一個包含4個文本文件的文件夾。我想編程一個代碼,我可以檢查文件夾中文件的大小,只打開那些大小相同的代碼。任何人有任何想法?如何用python檢查目錄中文件的大小?
我已經嘗試過這種
import os
d=os.stat('H:/My Documents/211').st_size
中獲得的所有文件的目錄中,你可以使用os.listdir
。
>>> import os
>>> basedir = 'tmp/example'
>>> names = os.listdir(basedir)
>>> names
['a', 'b', 'c']
然後,你需要到名稱添加basedir
:
>>> paths = [os.path.join(basedir, name) for name in names]
>>> paths
['tmp/example/a', 'tmp/example/b', 'tmp/example/c']
然後你就可以使用os.stat(路徑)把它轉換成對(名稱,大小)的列表。 st_size(我創建的示例文件是空的):
>>> sizes = [(path, os.stat(path).st_size) for path in paths]
>>> sizes
[('tmp/example/a', 0), ('tmp/example/b', 0), ('tmp/example/c', 0)]
然後你可以組合在一起使用collections.defaultdict
相同大小的路徑:
>>> import collections
>>> grouped = collections.defaultdict(list)
>>> for path, size in sizes:
... grouped[size].append(path)
...
>>> grouped
defaultdict(<type 'list'>, {0: ['tmp/example/a', 'tmp/example/b', 'tmp/example/c']})
現在你可以按大小得到的所有文件,並打開他們所有(不要忘記之後關閉它們!):
>>> open_files = [open(path) for path in grouped[0]]
感謝您的幫助。我如何將分組項目放入列表中並將其寫入csv文件,以便日後使用? – UserYmY
這取決於你想要什麼在CSV文件。具有大小,文件名1,文件名2,文件名3的行? – babbageclunk
我無法重現你的錯誤。這
import os
print os.path.getsize('mydata.csv')
print os.stat('mydata.csv').st_size
息率
359415
359415
我猜您提供的文件名是錯誤的。這將打印的所有文件大小的文件夾
my_dir = r'path/to/subdir/'
for f in os.listdir(my_dir):
path = os.path.join(my_dir, f)
if os.path.isfile(path):
print os.path.getsize(path)
謝謝第二個人爲我工作。你有什麼想法,我怎麼可以編碼,以便打開大小相同的文件? – UserYmY
這是很好的,你已經嘗試過的東西。想必它沒有做你想要的。它做了什麼?你期望它做什麼? – babbageclunk
打印結果d對我顯示零。我想比較文件的大小並打開相同大小的文件 – UserYmY