我有一个批处理文件,我用它来加载一些预构建二进制文件来控制我的设备。它的命令是:
cd build
java -classpath .;..\Library\mfz-rxtx-2.2-20081207-win-x86\RXTXcomm.jar -
Djava.library.path=..\Library\mfz-rxtx-2.2-20081207-win-x86 tabotSample/Good1
pause
现在,我想使用Python运行批处理文件,我尝试了os.system(batch,bat)
,我尝试使用Popen
import os
from subprocess import Popen
os.popen("cd TAbot")
r=os.popen("hello.bat")
但是,python控制台(Anaconda python 2.7)似乎执行了代码,但没有返回任何内容,也没有任何反应。我想从python运行这个批处理文件,请帮帮我。顺便说一句,我尝试了另一个批处理文件,如echo Hello
,但没有任何反应。
我认为这应该是这样的:
batch.朋友
from subprocess import Popen
p = Popen("test.bat", cwd=r"C:\path\to\batch\folder")
stdout, stderr = p.communicate()
test.bat的
echo Hello World!
pause
这是一个简单的解决方案。
from subprocess import Popen
import subprocess
def run_batch_file(file_path):
Popen(file_path,creationflags=subprocess.CREATE_NEW_CONSOLE)
run_batch_file('file_name.bat')
file_name.bat
echo .bat file running from python
pause
你也可以用这个
import subprocess
subprocess.call(["C:\\temp\\test.bat"], shell=False)
test.bat的
copy "C:\temp\test.txt" "C:\temp\test2.txt"
在这里,许多人提出了非常有用的解决方案,但我想指出程序所在位置的重要性。 (Bat文件通常用于自动化任务,以减少时间,这很有可能工作一些任务相关的路径)
import subprocess
os.chdir("YOUR TARGET PATH")
exit_code = subprocess.call(FILEPATH)# FILEPATH is from the standpoint on YOUR TARGET PATH