为了账号安全,请及时绑定邮箱和手机立即绑定

我怎样才能让这个脚本检查目录中的每个文件但不记录每个单独的检查?

我怎样才能让这个脚本检查目录中的每个文件但不记录每个单独的检查?

慕姐8265434 2021-11-02 09:52:40
我一直在调整我用于工作的这个脚本,以尝试使其对我以外的人更加用户友好。这是给我带来一些麻烦的片段。def depdelete(path):    for path, dirs, files in os.walk(path):        for f in files:            if f.endswith('.exe'):                os.remove(os.path.join(path, f))                print('Dep Files have been deleted from' + path)                with open(completeName, 'a') as ddr:                    ddr.write('Dep Files have been deleted from' + path + '. \n')            else:                print('No Dep Files found in' + path)                with open(completeName, 'a') as ddr:                    ddr.write('No Further Dep Files found in' + path + '. \n')现在,脚本按预期工作。文件被正确删除和记录。但是,在其当前状态下,Else 语句会针对路径中的每个文件运行,从而导致重复条目“在...中未找到进一步的 Dep 文件”。我想改变这一点,以便它检查每个文件,但在检查整个文件后,只记录一个实例“没有在...中找到更多的Dep文件”基本上,我怎样才能检查目录中的每个文件,但在检查每个文件后只记录一次“没有在...中找到更多的Dep文件”。现在有点空白,有一种“在我舌尖上”的感觉。提示?
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

改用标志。


def depdelete(path):


    for path, dirs, files in os.walk(path):

        for f in files:

            found = False              # Add a boolean as flag, reset each iteration

            if f.endswith('.exe'):

                found = True           # Set the flag so "No further..." will not be triggered

                os.remove(os.path.join(path, f))

                print('Dep Files have been deleted from' + path)

                with open(completeName, 'a') as ddr:

                    ddr.write('Dep Files have been deleted from' + path + '. \n')

            if not found:              # check the flag

                print('No Dep Files found in' + path)

                with open(completeName, 'a') as ddr:

                    ddr.write('No Further Dep Files found in' + path + '. \n')


查看完整回答
反对 回复 2021-11-02
?
萧十郎

TA贡献1815条经验 获得超13个赞

这似乎只需要一点重组。


def depdelete(path):


    wereThereAnyDepFiles = False


    for path, dirs, files in os.walk(path):

        for f in files:

            if f.endswith('.exe'):

                os.remove(os.path.join(path, f))

                print('Dep Files have been deleted from' + path)

                with open(completeName, 'a') as ddr:

                    ddr.write('Dep Files have been deleted from' + path + '. \n')

                wereThereAnyDepFiles = True


    if not wereThereAnyDepFiles:

        print("No Dep files found in "+path)

下面,写入文件的内容表明您希望这表明检查已结束并且您找不到更多的.exe文件。使用这个假设,最好将语句放在if块之外,就像我在下面所做的那样。如果我误解了您的意图,将语句放在if块中应该可以实现您的需要。


    with open(completeName, 'a') as ddr:

        ddr.write('No Further Dep Files found in'+path+'. \n')


查看完整回答
反对 回复 2021-11-02
  • 2 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信