我需要编写一个执行以下操作的脚本
编写一个python脚本,列出当前目录中的所有文件和目录以及在最后X分钟内修改过的所有子目录。 应将X作为命令行参数。 检查此参数是否存在,如果不存在,则退出并显示相应的错误消息。 X应该是一个小于或等于120的int。如果不是,请退出并显示一条合适的错误消息。 对于这些文件和目录中的每一个,列出修改时间,无论是文件还是目录, 和它的大小。
我想出了这个
#!/usr/bin/python
import os,sys,time
total = len(sys.argv)
if total < 2:
print "You need to enter a value in minutes"
sys.exit()
var = int(sys.argv[1])
if var < 1 or var > 120 :
print "The value has to be between 1 and 120"
sys.exit()
past = time.time() - var * 60
result = []
dir = os.getcwd()
for p, ds, fs in os.walk(dir):
for fn in fs:
filepath = os.path.join(p, fn)
status = os.stat(filepath).st_mtime
if os.path.getmtime(filepath) >= past:
size = os.path.getsize(filepath)
result.append(filepath)
created = os.stat(fn).st_mtime
asciiTime = time.asctime( time.gmtime( created ) )
print "Files that have changed are %s"%(result)
print "Size of file is %s"%(size)
所以它用这样的东西报告
Files that have changed are ['/home/admin/Python/osglob2.py']
Size of file is 729
Files that have changed are ['/home/admin/Python/osglob2.py', '/home/admin/Python/endswith.py']
Size of file is 285
Files that have changed are ['/home/admin/Python/osglob2.py', '/home/admin/Python/endswith.py', '/home/admin/Python/glob3.py']
Size of file is 633
我如何才能停止重播文件?
答案 0 :(得分:1)
您的代码构建其遇到的所有文件的列表的原因是
result.append(filepath)
以及每次打印出整个列表的原因是
print "Files that have changed are %s"%(result)
所以你需要更改其中一行:要么替换列表,要么替换它,或者(更明智的IMO)只打印出找到的最新文件名,而不是整个列表。
答案 1 :(得分:0)
您不会在每次迭代结束时清除结果列表。在第二个result.clear()
语句后尝试print
之类的内容。确保它与for
处于同一缩进,而不是print
。