简体   繁体   中英

Execute batch file using Python script

I'm trying to execute a batch file using a Python script. Is this possible? The Python script is in a different folder than the batch file. For example, the Python script is in C:\\users\\me\\desktop\\python while the batch file is in a folder C:\\users\\me\\desktop\\batch . I prefer not to use the full path to the batch file because I want it to work on other people's computer as well (ie the C:\\users\\me part might be different).

This is the script I tried (executed from the "python" folder on desktop)

from subprocess import call

path = "..\batch"
call([path+"\test.bat"])

Result: file not found

Backslash escapes special characters in python. Therefore, the paths that you are creating here are not the ones you think they are:

In [1]: test = "..\bfoo"

In [2]: test
Out[2]: '..\x08foo'

Use raw strings instead:

In [3]: test = r"..\bfoo"

In [4]: test
Out[4]: '..\\bfoo'

And actually, the best way to combine path segments in python is by using os.path.join . This will automatically take care of the backslash vs. slash issues for Unix-lie vs. Windows operating systems.

Use os.path ,

import os 

dir_path = os.path.dirname(os.path.realpath(__file__))  # get the full path of the Python file
parent_dir = os.path.dirname(dir_path)

new_path = os.path.join(parent_dir, 'bath', 'test.bat')

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