使用Python脚本执行批处理文件

时间:2017-02-17 10:06:54

标签: python batch-file

我尝试使用Python脚本执行批处理文件。这可能吗? Python脚本与批处理文件位于不同的文件夹中。例如,Python脚本位于 // execute code to enter critical section choosing[(childProc-1)] = 1; for (maxCounter = 0; maxCounter < slave_max; maxCounter++) { if((turnNum[maxCounter]) > max) max = (turnNum[maxCounter]); } turnNum[(childProc-1)] = 1 + max; printf("turnNum for process #%i = %i\n", childProc, turnNum[(childProc-1)]); choosing[(childProc-1)] = 0; for (j = 0; j < slave_max; j++) { while (choosing[j] == 1) {} while ((turnNum[j] != 0) && (turnNum[j] < turnNum[(childProc-1)])) {} } // critical section napTime = rand() % 3; sleep(napTime); sharedNum[0]++; clock_gettime(CLOCK_REALTIME, &now); curTime = ((((long)now.tv_sec) * 1000000000) + (long)now.tv_nsec); // write message to log file here // for testing purposes: printf("File modified by process #%i (increment %i) at time %ld with sharedNum = %i\n", childProc, (i+1), curTime, sharedNum[0]); napTime = rand() % 3; sleep(napTime); // exit from critical section turnNum[(childProc-1)] = 0; ,而批处理文件位于文件夹C:\users\me\desktop\python中。我不想使用批处理文件的完整路径,因为我希望它也适用于其他人的计算机(即C:\users\me\desktop\batch部分可能不同)。

这是我尝试的脚本(从桌面上的&#34; python&#34;文件夹执行)

C:\users\me

结果:找不到文件

2 个答案:

答案 0 :(得分:1)

反斜杠转义python中的特殊字符。因此,您在此处创建的路径不是您认为的路径:

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

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

改为使用原始字符串:

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

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

实际上,在python中组合路径段的最佳方法是使用os.path.join。这将自动处理Unix-lie与Windows操作系统的反斜杠与斜杠问题。

答案 1 :(得分:0)

使用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')