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 inC:\users\me\desktop\python while the batch file is in a folderC:\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 (i.e. theC:\users\me part might be different).
This is the script I tried (executed from the "python" folder on desktop)
from subprocess import callpath = "..\batch"call([path+"\test.bat"])Result: file not found
- Possible duplicate of (stackoverflow.com/questions/5469301/…)Chanda Korat– Chanda Korat2017-02-17 10:11:28 +00:00CommentedFeb 17, 2017 at 10:11
- 2Possible duplicate ofRun a .bat file using python codeFlorian Koch– Florian Koch2017-02-17 10:13:32 +00:00CommentedFeb 17, 2017 at 10:13
- Possible duplicate ofExecuting a subprocess failsfeedMe– feedMe2017-02-17 10:45:20 +00:00CommentedFeb 17, 2017 at 10:45
2 Answers2
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]: testOut[2]: '..\x08foo'Use raw strings instead:
In [3]: test = r"..\bfoo"In [4]: testOut[4]: '..\\bfoo'And actually, the best way to combine path segments in python is by usingos.path.join. This will automatically take care of the backslash vs. slash issues for Unix-lie vs. Windows operating systems.
9 Comments
Useos.path,
import os dir_path = os.path.dirname(os.path.realpath(__file__)) # get the full path of the Python fileparent_dir = os.path.dirname(dir_path)new_path = os.path.join(parent_dir, 'bath', 'test.bat')Comments
Explore related questions
See similar questions with these tags.


