Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python脚本执行的批处理与脚本中的批处理一样';s文件夹_Python_Windows_Batch File_Jar - Fatal编程技术网

Python脚本执行的批处理与脚本中的批处理一样';s文件夹

Python脚本执行的批处理与脚本中的批处理一样';s文件夹,python,windows,batch-file,jar,Python,Windows,Batch File,Jar,我使用以下代码行运行批处理(它位于与python脚本不同的文件夹中): subprocess.Popen("the_bat.bat", creationflags=subprocess.CREATE_NEW_CONSOLE) 批处理的任务是启动一个.jar(与批处理相同的目录),它在其目录中创建文件夹和文件,但是当由python脚本运行时,jar开始在脚本的文件夹中执行其任务。 有没有关于如何防止这种情况的建议?这是因为bash脚本是在Python的工作目录中执行的,这使得bash脚本的工作目

我使用以下代码行运行批处理(它位于与python脚本不同的文件夹中):

subprocess.Popen("the_bat.bat", creationflags=subprocess.CREATE_NEW_CONSOLE)
批处理的任务是启动一个.jar(与批处理相同的目录),它在其目录中创建文件夹和文件,但是当由python脚本运行时,jar开始在脚本的文件夹中执行其任务。
有没有关于如何防止这种情况的建议?

这是因为bash脚本是在Python的工作目录中执行的,这使得bash脚本的工作目录与Python的工作目录相同。您可以通过将当前工作目录传递给
subprocess.Popen
来解决此问题


subprocess.Popen(r'your script',cwd=r'd:\the\working\directory\your\want\or\root')

批处理文件是
%0
参数
Echo%~dp0
将打印批处理文件的文件夹。请参见
call/?
。加载程序的目录与当前目录不同。您可以通过
cwd
参数将子进程的当前工作目录设置为
Popen
。下次使用代码格式,按照@code的建议执行。批处理脚本不应该依赖于工作目录来查找与其自身相关的资源。如果在运行另一个程序之前需要设置相对于自身的工作目录,那么它应该
pushd%~dp0