我尝试使用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
结果:找不到文件
答案 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')