[英]getting size of multiple files located inside the hard disk using python
這個問題是關於獲取位於硬盤中的多個文件的大小。 根據以下答案對代碼進行了改進:
import os, glob
with open ('file_size.txt', 'w') as outfile:
files= glob.glob ('*.jpg')
for file in files:
get_sizes = os.path.getsize (file)
for item in get_sizes:
if item < 1000:
size = str (item) + 'K'
else:
size = str (round ((item/(1024*1024)),1)) + 'M'
file_name = os.path.basename (file)
outfile.write(file_name + ' ' + size + '\n')
但是,上面的代碼仍然產生以下錯誤:
Traceback (most recent call last):
File "G:\test\test.py", line 6, in <module>
for item in get_sizes:
TypeError: 'int' object is not iterable
怎么了?
看起來您正在為if語句嵌套而苦苦掙扎。 除非項足夠小,否則第一個if
之后的所有內容將不會執行;如果您的內容太小,則第二個if
之后的所有內容都不會執行。
我假設您要根據文件的size
將size
設置為不同的值,然后始終將一行輸出到您的輸出文件。 取消縮進會做到這一點。 我還將第二個if
更改為另一個else
以便一個或另一個始終執行。
另外,os.path.getsize()僅返回一個文件的大小,因此您無需遍歷結果。
import os, glob
with open ("file_size.txt", "w") as outfile:
files= glob.glob ("G:\\*.jpg")
for file in files:
get_size = os.path.getsize (file)
if get_size < 1000:
size = str (item) + 'K'
else:
size = str (round ((item/(1024*1024)),1)) + 'M'
out_name = os.path.basename (file)
outfile.write(out_file + " " + size + "\n")
這out_name
分配給out_name
和寫入outfile
的if
語句之外,以便它們始終執行,而不是依賴於if
條件。
if item < 1000:
size = str (item) + 'K'
if item > 1000:
#this will never execute
#since you have already asserted that item < 1000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.