我想遍歷目錄和子目錄,並檢查每個文件的文件大小。如果它匹配定義的文件大小,它將被刪除。遍歷目錄並檢查文件的大小
我知道,我必須使用os.walk,但我不太確定,以哪種方式。
我使用的目錄列表中的代碼是:
import os
path = "C:\\Python27"
i=0
for (path,dirs,files) in os.walk(path):
print files
i=i+1
if i>10:
break
我想遍歷目錄和子目錄,並檢查每個文件的文件大小。如果它匹配定義的文件大小,它將被刪除。遍歷目錄並檢查文件的大小
我知道,我必須使用os.walk,但我不太確定,以哪種方式。
我使用的目錄列表中的代碼是:
import os
path = "C:\\Python27"
i=0
for (path,dirs,files) in os.walk(path):
print files
i=i+1
if i>10:
break
試試這個:
import os
for root, dirs, files in os.walk('/path/to/dir', topdown=False):
for name in files:
f = os.path.join(root, name)
if os.path.getsize(f) == filesize:
os.remove(f)
[Python中的目錄列表]的
非常感謝。有效! 如果我還想檢查與目錄名稱相同的目錄中的文件名,該怎麼辦?假設檢查目錄mydir中名爲mydir.txt的文件。 –
@RobertShane它都是一樣的,添加另一個條件,如'如果root.endswith(name [:name.rindex('。')]):' –
這應該工作:
from __future__ import print_function # => For Python 2.5 - 2.7
import os
def delete_files_with_size(dirname, size):
for root, _, files in os.walk(dirname):
for filename in files:
filepath = os.path.join(root, filename)
if os.path.getsize(filepath) == size:
print('removing {0}'.format(filepath))
os.remove(filepath)
就像你說的,os.walk是去這樣的事情的方式。 os.walk
返回一個包含根路徑,目錄列表和文件列表的元組。由於我們對目錄不感興趣,因此在解壓縮返回值時,我們使用傳統的_
變量名稱。
由於文件名本身不包含路徑,因此您可以使用os.path.join
和root
和filename
。 os.path.getsize將返回文件的大小,並且os.remove
將刪除該文件,如果它與大小相匹配。
可能重複(http://stackoverflow.com/questions/120656/directory-listing-in-python) –
你真的應該嘗試的東西在尋求幫助之前 – cobie
我可以列出所有的目錄和文件,但我想檢查每個目錄中的特定文件大小。 –