我正在尝试查找特定目录中30天的文件,将它们移动到新文件夹并压缩该文件夹,但是当我执行我的脚本时,Python会抱怨 Python AttributeError:'str'对象没有属性'append'
import os
import time
import sys
import shutil
import tarfile
import sys
import os.path
import _strptime
from array import*
path="/Data/"
now = time.time()
export = os.path.join(path+"archives")
f=[]
m=[]
for root, dirs, files in os.walk(path): #List files in directory
for basename in files:
f.append(os.path.join(root,basename))
print(f)
for i in f:
mtime=os.stat(i).st_mtime
print(i, mtime)
if mtime > now - 7 * 86400:
m.append(i)
os.makedirs(export,0777)
for f in m:
print("moving file", f, "to", export)
shutil.move(f, export)
tarfile.open(export +time.strftime("%d-%Y-%m") +'.tar.gz', 'w:gz')
else:
print("Nothing to do")
答案 0 :(得分:3)
您正在重新声明f
变量。它是开头的列表,但后来用于内循环
for f in m:
使f
成为字符串
只需将内部循环变量的名称更改为不同的名称,如
for filename in m:
print("moving file", filename, "to", export)
shutil.move(filename, export)
tarfile.open(export +time.strftime("%d-%Y-%m") +'.tar.gz', 'w:gz')
如果你将一个变量声明为"内部循环变量"那么python是一个非常普遍的问题。它的范围与"外部"相同。循环所以它会覆盖它的值。
x = 5
print x #prints 5
for a in range(10):
for x in range(10):
y=1
print x #prints 9
sth = [ 1 for x in range(20) ]
print x #prints 19