If there will be a small number of files it should be easy with a recursive function to pass through all the files and add the size but what if there are lots of files, and by lots i really mean lots of files.
如果将有少量文件,使用递归函数来传递所有文件并添加大小应该很容易,但如果有大量文件,那么如果有很多文件我会说很多文件。
4 个解决方案
#1
10
You mean something like this?
你的意思是这样的?
import os
for path, dirs, files in os.walk( root ):
for f in files:
print path, f, os.path.getsize( os.path.join( path, f ) )
#2
5
There is no other way to compute the size than recursively invoking stat. This is independent of Python; the operating system just provides no other way.
没有其他方法可以计算大小而不是递归调用stat。这与Python无关;操作系统只是提供其他方式。
The algorithm doesn't have to be recursive; you can use os.walk.
该算法不必是递归的;你可以使用os.walk。
There might be two exceptions to make it more efficient:
可能有两个例外,以提高效率:
- If all the files you want to measure fill a partition, and the partition has no other files, then you can look at the disk usage of the partition.
- If you can continuously monitor all files, or are responsible for creating all the files yourself, you can generate an incremental disk usage.
如果要测量的所有文件都填充分区,并且该分区没有其他文件,则可以查看该分区的磁盘使用情况。
如果您可以持续监视所有文件,或者负责自己创建所有文件,则可以生成增量磁盘使用情况。
#3
1
There is a recipe for that problem in the Python Cookbook (O'Reilly). You can read the full solution with an example online:
Python Cookbook(O'Reilly)中有一个解决这个问题的方法。您可以通过在线示例阅读完整的解决方案:
http://safari.oreilly.com/0596001673/pythoncook-CHP-4-SECT-24
or here:
http://books.google.com/books?id=yhfdQgq8JF4C&pg=PA152&dq=du+command+in+python
#4
0
If you are on a posix system that provides du, you should be able to use pexpect.run
or subprocess
to execute du <path to folder>
to get the size of the folder and subfiles. Keep in mind it will output a string with each file listed and each folder totaled. (Look at the du manpage to see what you can do to limit that).
如果你在提供du的posix系统上,你应该能够使用pexpect.run或subprocess来执行du
#1
10
You mean something like this?
你的意思是这样的?
import os
for path, dirs, files in os.walk( root ):
for f in files:
print path, f, os.path.getsize( os.path.join( path, f ) )
#2
5
There is no other way to compute the size than recursively invoking stat. This is independent of Python; the operating system just provides no other way.
没有其他方法可以计算大小而不是递归调用stat。这与Python无关;操作系统只是提供其他方式。
The algorithm doesn't have to be recursive; you can use os.walk.
该算法不必是递归的;你可以使用os.walk。
There might be two exceptions to make it more efficient:
可能有两个例外,以提高效率:
- If all the files you want to measure fill a partition, and the partition has no other files, then you can look at the disk usage of the partition.
- If you can continuously monitor all files, or are responsible for creating all the files yourself, you can generate an incremental disk usage.
如果要测量的所有文件都填充分区,并且该分区没有其他文件,则可以查看该分区的磁盘使用情况。
如果您可以持续监视所有文件,或者负责自己创建所有文件,则可以生成增量磁盘使用情况。
#3
1
There is a recipe for that problem in the Python Cookbook (O'Reilly). You can read the full solution with an example online:
Python Cookbook(O'Reilly)中有一个解决这个问题的方法。您可以通过在线示例阅读完整的解决方案:
http://safari.oreilly.com/0596001673/pythoncook-CHP-4-SECT-24
or here:
http://books.google.com/books?id=yhfdQgq8JF4C&pg=PA152&dq=du+command+in+python
#4
0
If you are on a posix system that provides du, you should be able to use pexpect.run
or subprocess
to execute du <path to folder>
to get the size of the folder and subfiles. Keep in mind it will output a string with each file listed and each folder totaled. (Look at the du manpage to see what you can do to limit that).
如果你在提供du的posix系统上,你应该能够使用pexpect.run或subprocess来执行du