我正在运行一个脚本,用于检查和更新包含tar文件的目录。
#!/usr/bin/env python
import tarfile
import shutil
import os
os.chdir("/data/output/Camera1")
tarlist = os.listdir("/data/output/Camera1/tar-files")
directorylist = os.listdir(".")
directorylist.remove(".keep")
directorylist.remove("tar-files")
print tarlist
for dir in directorylist:
if (dir + ".tar.gz") in tarlist:
print dir
directorylist.remove(dir)
print directorylist
此代码的输出为
['2019-12-22.tar.gz', '2019-12-21.tar.gz', '2019-12-20.tar.gz']
2019-12-22
2019-12-20
['2019-12-21']
该脚本首先列出tar-file目录中已经存在的文件,然后将它们与它们所在的目录进行比较。如果tar文件名与目录匹配,那么我需要它从目录列表中删除所述目录。
但是,即使存在tar文件,从输出代码中也可以看到它跳过了2019-12-21。它会从列表中正确删除其他项,如果我再次运行相同的脚本,然后重复执行以下过程:
for dir in directorylist:
if (dir + ".tar.gz") in tarlist:
print dir
directorylist.remove(dir)
for dir in directorylist:
if (dir + ".tar.gz") in tarlist:
print dir
directorylist.remove(dir)
然后它将注意到2019-12-21.tar.gz文件并根据需要从列表中对其进行编辑,但这似乎不正确。我不知道为什么它第一次不通知文件。我的错在哪里?