我正在为我下载的电视节目制作一个清理脚本。我希望它获取每个文件夹中的最大文件,移动/重命名它,然后删除该文件夹。我遇到的问题是,有时当有另一个嵌套文件夹时,它会崩溃并跳过它。我不知道如何将其转换为执行相同功能的递归函数。最好只查找最大的文件,而不是使用硬编码的30MB。
此外,有时我下载的文件的日期不正确,因此如果它可以使每个新文件成为脚本运行的当前日期和时间,那就太棒了。
import os
import shutil
dir = "C:\Users\Bobe\Downloads\TV\\"
for folder in os.listdir(dir):
if os.path.isdir(os.path.join(dir,folder)):
for file in os.listdir(dir + folder):
filelocation = dir+folder+"\\"+file
if os.path.getsize(filelocation) > 30000000: # This is in bytes (30 MB)
extension = os.path.splitext(file)[1]
shutil.move(filelocation, dir + folder + extension)
else:
os.remove(filelocation)
shutil.rmtree(dir + folder)
答案 0 :(得分:3)
我正在学习python :)感谢您的练习:D
这应该有效:
import os
import sys
biggest = ("", -1)
directory = sys.argv[1]
print "Searching", directory
def search(dir):
global biggest
for item in os.listdir(dir):
item = dir + "/" + item
if os.path.isdir(item):
search(item)
else:
itemsize = os.path.getsize(item)
if itemsize > biggest[1]:
biggest = (item, itemsize)
search(directory)
if biggest[1] != -1:
print "Found: ", biggest
# Do something with biggest
祝你好运!