我正在尝试删除文件夹中的所有空文件,文件夹中有文件夹,因此它也需要检查这些文件夹:
e.g 删除C:\ folder1 \ folder1和C:\ folder1 \ folder2等
中的所有空文件答案 0 :(得分:3)
import sys
import os
def main():
getemptyfiles(sys.argv[1])
def getemptyfiles(rootdir):
for root, dirs, files in os.walk(rootdir):
for d in ['RECYCLER', 'RECYCLED']:
if d in dirs:
dirs.remove(d)
for f in files:
fullname = os.path.join(root, f)
try:
if os.path.getsize(fullname) == 0:
print fullname
os.remove(fullname)
except WindowsError:
continue
这将有点调整:
os.remove()
语句可能会失败,因此您可能希望用try...except
包装它。 WindowsError
是特定于平台的。过滤遍历的目录并非绝对必要,但很有帮助。
答案 1 :(得分:0)
for循环使用dir以递归方式查找当前目录和所有子文件夹中的所有文件,但不查找目录。然后第二行检查每个文件的长度是否小于1个字节,然后再删除它。
cd /d C:\folder1
for /F "usebackq" %%A in (`dir/b/s/a-d`) do (
if %%~zA LSS 1 del %%A
)
答案 2 :(得分:0)
我希望这可以帮到你
#encoding = utf-8
import os
docName = []
def listDoc(path):
docList = os.listdir(path)
for doc in docList:
docPath = os.path.join(path,doc)
if os.path.isfile(docPath):
if os.path.getsize(docPath)==o:
os.remove(docPath)
if os.path.isdir(docPath):
listDoc(docPath)
listDoc(r'C:\folder1')
答案 3 :(得分:0)
import os
while(True):
path = input("Enter the path")
if(os.path.isdir(path)):
break
else:
print("Entered path is wrong!")
for root,dirs,files in os.walk(path):
for name in files:
filename = os.path.join(root,name)
if os.stat(filename).st_size == 0:
print(" Removing ",filename)
os.remove(filename)
答案 4 :(得分:0)
我首先要删除空文件,然后按照此答案(https://stackoverflow.com/a/6215421/2402577),我已经删除了空文件夹。
此外,我在topdown=False
中添加了os.walk()
以便从叶漫游到roo,因为os.walk()
的默认行为是从根漫游到叶子。
因此,同样包含空文件夹或文件的空文件夹也将被删除。
import os
def remove_empty_files_and_folders(dir_path) -> None:
for root, dirnames, files in os.walk(dir_path, topdown=False):
for f in files:
full_name = os.path.join(root, f)
if os.path.getsize(full_name) == 0:
os.remove(full_name)
for dirname in dirnames:
full_path = os.path.realpath(os.path.join(root, dirname))
if not os.listdir(full_path):
os.rmdir(full_path)