列表检查跳过项目?

时间:2019-12-22 20:41:29

标签: linux python-2.7 listdir motioneyeos

我正在运行一个脚本,用于检查和更新包含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文件并根据需要从列表中对其进行编辑,但这似乎不正确。我不知道为什么它第一次不通知文件。我的错在哪里?

0 个答案:

没有答案