Use*_*YmY 3 python size compare
我有一个包含4个文本文件的文件夹.我想编写一个代码,用它来检查我文件夹中文件的大小,只打开那些大小相同的代码.任何人有任何想法?
我已经试过了
import os
d=os.stat('H:/My Documents/211').st_size
Run Code Online (Sandbox Code Playgroud)
我无法重现你的错误.这个
import os
print os.path.getsize('mydata.csv')
print os.stat('mydata.csv').st_size
Run Code Online (Sandbox Code Playgroud)
产量
359415
359415
Run Code Online (Sandbox Code Playgroud)
我猜你提供的文件名错了.这将打印文件夹中所有文件的大小
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)
Run Code Online (Sandbox Code Playgroud)
要获取目录中的所有文件,可以使用os.listdir。
>>> import os
>>> basedir = 'tmp/example'
>>> names = os.listdir(basedir)
>>> names
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
然后,您需要添加basedir名称:
>>> paths = [os.path.join(basedir, name) for name in names]
>>> paths
['tmp/example/a', 'tmp/example/b', 'tmp/example/c']
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用os.stat(path).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)]
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用来将具有相同大小的路径分组在一起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']})
Run Code Online (Sandbox Code Playgroud)
现在,您可以按大小获取所有文件,然后将它们全部打开(不要忘了之后将其关闭!):
>>> open_files = [open(path) for path in grouped[0]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5072 次 |
| 最近记录: |