Popen用参数调用程序

2024-09-30 14:38:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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()

什么是正确的结构来称呼这个


Tags: 文件函数错误exestartfile1backupfile2
2条回答

你试过跑步而不是波本吗

subprocess.run(['Extractor64.exe', '-F', r'C:\File1','-E' , r'C:\file2'])

你可以在这里阅读:https://docs.python.org/3/library/subprocess.html#subprocess.run

它允许shell=True等

  1. start是一个内置的shell。它不是一个真正的可执行文件。所以没有shell=True就不能调用它。这是您的主要错误:系统中没有start.exe。但还有更多
  2. 不需要在后台启动进程,因为您似乎在等待它。或者不用start启动它,不要等待,或者只是等待:不要使用start,所以现在可以使用check_call
  3. 使用列表而不是字符串作为参数
  4. 在字符串中使用反斜杠需要转义/raw字符串前缀,在您的情况下\t变成“TAB char”

我的建议是:

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"])

相关问题 更多 >