我有一个可执行文件,名为tsfoil2.exe,我想从我的Python环境中运行这个.exe文件。 我在Windows 7上运行的Python 2.7.3,与Spyder的2.1.11。
为了操作中的.exe,它需要一些输入,默认的硬盘驱动器(“I:\”),用于输入文件(“SC20610.inp”),为OUTPUTFILE(“测试”)的名称,名称。
我的一个同事建议我使用使用os.system,并与临时输入文件提供此,它包含了所有的参数。
f = open('temp', 'w')
f.write('I:\ \n')
f.write('test \n')
f.write('SC20610.inp\n')
f.close()
我再与参数通过以下方式中的.exe提供此文件:
os.system("tsfoil2.exe < temp")
这一切工作,但该计划需要一个“ENTER”键来关闭。 出于某种原因,该.exe文件反复询问到“按ENTER键退出”。 甚至,当我按在我的Spyder控制台回车键,该程序不会终止。
有没有办法给予“ENTER”键作为交互式输入到.EXE? 我试图使用SendKeys类,但因为程序不会终止,它没有达到的代码包含的SendKeys命令行。 我也试着将其包括在参数文件,但是这也不管用。
此外,我还发现,它可能是有益的切换到子进程的命令,因为它可能给我更多指挥权的执行,但我一直无法运行与输入文件的可执行文件。
是有可能提供必要的“确认”使用使用os.system,或我应该切换到子过程,并且如果是,如何可以构造类似于使用os.system(“tsfoil2.exe <临时”)的方法,我现在使用。
我已经试过这样:
import subprocess as sub
f = open('temp', 'w')
f.write('I:\ \n')
f.write('test \n')
f.write('SC20610.inp\n')
f.close()
proc=sub.Popen(["tsfoil2.exe","temp"], shell=True)
和这个
import subprocess as sub
p=sub.Popen('tsfoil2.exe')
p.communicate(input='I:' )
但是,该方案并没有给予提出答辩。
MWE:
import os
f = open('temp', 'w')
f.write('I:\ \n')
f.write('test \n')
f.write('SC20610.inp\n')
f.close()
os.system("tsfoil2.exe < temp")
两个程序可以经由找到http://www.dept.aoe.vt.edu/~mason/Mason_f/tsfoil2.exe ,输入文件可以通过找到http://www.dept.aoe.vt.edu /~mason/Mason_f/SC20610.inp 。
我希望一切都清楚了,你能帮助我。