Subprocess.Popen打开.exe终端程序并输入程序

2024-09-30 14:16:18 发布

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

我正在尝试使用.exe文件打开.csv文件。文件和程序都包含在同一文件夹中。当手动打开文件夹时,我将csv文件拖到exe的顶部,然后它打开,我按任意键开始程序

使用shell时,我可以使用此脚本执行我想要的操作

E:
cd ISAAC\SWEM\multiprocess\2000
SWEM_1_2000_multiprocess.exe "seedMIXsim.csv"
<wait for program to initialize>
<press any key>

到目前为止,在python3中,我已经尝试了几个子流程的变体,最新的一个变体是使用Popen,输入参数为=“h”作为随机键,应该可以启动程序

proc = subprocess.Popen(
        ['E://ISAAC//SWEM//multiprocess//2010//SWEM_1_2010_multiprocess.exe', '"E://ISAAC//SWEM//multiprocess//2010//seedMIXsim.csv"'], input="h")

但是,当我输入任何参数(如stdout或input)时,python程序几乎会立即完成,而不做任何操作。 理想情况下,当exe在终端中运行并显示进度条时,我希望在运行程序时打开一个可见的cmd窗口


Tags: 文件csv程序文件夹input参数变体手动
1条回答
网友
1楼 · 发布于 2024-09-30 14:16:18

我将//替换为\并使用proc.communicate等待进程完成,从而解决了这个问题。这归结为C程序的具体设计,它以“按任意键”退出

def openFile(swemPath):
    simFile =(swemPath +'seedMIXsim.csv').replace('//', '\\')
    swemFile = f"E:\ISAAC\preSWEMgen\SWEMfiles\SWEM{cfg.hoursPerSimulation}hour.exe"
    proc = subprocess.Popen([swemFile, simFile], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
    wait = proc.communicate(input=b" ")

相关问题 更多 >

    热门问题