猿问

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

我一直在调整我用于工作的这个脚本,以尝试使其对我以外的人更加用户友好。这是给我带来一些麻烦的片段。


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文件”。


现在有点空白,有一种“在我舌尖上”的感觉。提示?


慕姐8265434
浏览 151回答 2
2回答

收到一只叮咚

改用标志。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')

萧十郎

这似乎只需要一点重组。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')
随时随地看视频慕课网APP

相关分类

Python
我要回答