简体   繁体   中英

Call a cmd.exe bat.-like command with python

i need some help with this... I have a program installed on my computer that i want to call to calculate some things and give me an output-file...

in Matlab the command "dos()" does the job giving me also the cmd screen output in matlab.

I need this to work in python but i am making something wrong.

data='file.csv -v'
db=' -d D:\directory\bla\something.db'
anw='"D:\Program Files\bla\path\to\anw.exe"' + db + ' -i' + data

"anw" output is this one:

>>> anw

'"D:\\Program Files\\bla\\path\\to\\anw.exe" -d D:\\directory\\bla\\something.db -i file.csv -v' 
## without the "" it does not work either

import subprocess as sb    
p= sb.Popen('cmd','/K', anw) ## '/C' does not work either

i get the following error message from cmd.exe inside the python shell

Windows cannot find "\"D:\Program Files\bla\path\to\anw.exe"" Make sure you typed the name correctly, and then try again.

this line runs when i make a bat. file out of it. it runs in matlab via "dos(anw)" so what is wrong here? ps: i have blanks in my command... could this be the problem? i do not know where the first "\\" comes from in the cmd. exe error message

for now i created a bat. file with all the stuff cmx.de should do in the specific directory where the input file lies...

i just had to tell python to change directory with

import os
os.chdir("D:\working\directory")
os.system(r'D:\working\directory\commands.bat')

it works good and gives me the output of cmd directly in the python shell

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM