簡體   English   中英

使用python獲取位於硬盤內的多個文件的大小

[英]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之后的所有內容都不會執行。

我假設您要根據文件的sizesize設置為不同的值,然后始終將一行輸出到您的輸出文件。 取消縮進會做到這一點。 我還將第二個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和寫入outfileif語句之外,以便它們始終執行,而不是依賴於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM