Windows 7 在windows中搜索其他驱动器以查找Python 3中的某些文件

Windows 7 在windows中搜索其他驱动器以查找Python 3中的某些文件,windows-7,python-3.3,cd-rom,Windows 7,Python 3.3,Cd Rom,我正在为Windows7创建一个Python3程序,用于搜索CD上安装可执行文件的通用名称并运行它。我尝试过使用多个os.path.exists,但当它找到正确的文件时,它打印出无法找到其他可能的文件名。 请帮忙 if os.path.exists("D:/autorun.exe"): os.startfile("D:/autorun.exe") else: print("Failed Attempt!")

我正在为Windows7创建一个Python3程序,用于搜索CD上安装可执行文件的通用名称并运行它。我尝试过使用多个os.path.exists,但当它找到正确的文件时,它打印出无法找到其他可能的文件名。 请帮忙

        if os.path.exists("D:/autorun.exe"):
            os.startfile("D:/autorun.exe")
        else:
            print("Failed Attempt!")
        if os.path.exists("D:/Install.exe"):
            os.startfile("D:/Install.exe")
        else:
            print("Failed Attempt!")
        if os.path.exists("D:/AutoRun.exe"):
            os.startfile("D:/AutoRun.exe")
        else:
            print("Failed Attempt!")
        if os.path.exists("D:/install.exe"):
            os.startfile("D:/install.exe")
        else:
            print("Failed Attempt!")

由于代码似乎处于相同的缩进级别,每个if/else块都将一个接一个地执行,因此打印尝试失败!对于每个不存在的文件路径。根据您在3月12日的评论,您可以使用for循环,后跟if/else块,以确保尝试失败!仅在检查所有文件是否存在后打印。请参阅下面的代码注意:由于我手头没有Windows 7,我没有测试过它,但它应该可以工作:

import os
FILES = ('D:/autorun.exe', 'D:/Install.exe', 'D:/AutoRun.exe', 'D:/install.exe')
FILE_FOUND = False

for file in FILES:
    if os.path.exists(file):
        FILE_FOUND = file
        break

if FILE_FOUND:
    os.startfile(FILE_FOUND)
else:
    print("Failed Attempt!")
所以要一步一步地分解它:

导入操作系统模块,显然您已经在其他地方这样做了

要检查的每个文件的文件路径将作为元组存储在文件中。之所以使用元组,是因为它是“不可变的”,因此我们知道它将按照上面所示的方式存储。这也很方便,因为这意味着for循环将按从左到右的顺序检查每个文件

找到的文件\u最初被指定为False。这将在后面用于两件事:

存储文件中文件的文件路径字符串(如果存在)。 用于确定是否应执行os.startfile。 接下来是for循环。“文件”元组中的每个文件路径字符串都可以通过以下缩进代码检查文件中的文件:。file变量是一个字符串,表示来自文件的当前文件路径,它是与for循环关联的代码的本地变量。然后循环检查文件中给定文件路径字符串处是否存在文件。如果文件存在,则会为找到的文件分配存储在文件中的字符串。然后break语句退出for循环,而不考虑文件中未检查的任何项。否则,for循环将继续运行,直到没有要签入文件的项为止

最后,if/else代码块仅在for循环找到存在的文件或完成对文件中所有项的处理后运行。如果FILE_FOUND由于不是None而计算为True,则将执行0、False或os.startfileFILE_FOUND,其中我们知道现有文件的filepath字符串先前已存储在for循环找到的FILE_中。如果在for循环中找不到任何filepath字符串,则FILE\u found变量仍将为False,因此打印尝试失败


我真的不知道该怎么办!添加了有问题的代码!你能给我举一个如何使用它的例子吗?这不是很有帮助,因为它与os.path.exists使用相同!我需要一些东西,将检查一堆可能的文件名,并返回找不到install.exe等。如果他们都失败了,对不起。我的意思是,如果我在我使用的GUI中执行代码,它将作为失败的尝试弹出,直到在中找到正确的文件。如果找不到任何可能的文件名,我不想只做一次。这真的不是一个错误,我现在正在使用Linux。。。那我该怎么做呢?CD会自动装载到/media目录中,但这将是一般性的,因此如何通过搜索文件名而不是路径和文件名来实现这一点?