我有一个EXE文件,可以这样称呼:
Extractor64.exe -F C:\File1 -E C:\file2
尝试从subprocess.Popen调用此方法时,出现找不到文件错误:
t=subprocess.Popen("start C:\yardi_backup_v2\Extractor64.exe -F C:\yardi_backup_v2\miadmfggp_live_Full_TKDB1A112_201812180000.Lts.bak -E C:\yardi_backup_v2\tmp\extracted.bak")
t.wait()
什么是正确的结构?
答案 0 :(得分:1)
start
是内置的shell。它实际上不是可执行文件。因此,如果没有shell=True
,则无法调用它。那是您的主要错误:系统中没有start.exe
。但是还有更多... start
的情况下启动它,然后就不等待,或者只是等待:不要使用start
,所以现在您可以改而使用check_call
。\t
变成“ TAB字符” 我的建议:
t=subprocess.check_call([r"C:\yardi_backup_v2\Extractor64.exe",
"-F",r"C:\yardi_backup_v2\miadmfggp_live_Full_TKDB1A112_201812180000.Lts.bak",
"-E",r"C:\yardi_backup_v2\tmp\extracted.bak"])
答案 1 :(得分:0)
您尝试过运行而不是Popen吗?
subprocess.run(['Extractor64.exe', '-F', r'C:\File1','-E' , r'C:\file2'])
您可以在此处阅读全部内容:https://docs.python.org/3/library/subprocess.html#subprocess.run
它允许shell = True,等等。