在从Windows批处理文件运行一个非常简单的Python脚本时,我遇到了一个问题。
批次代码为:
"C:\Python27\python.exe" "V34_File_Converter.py" %*
pause其中"V34_File_Converter.py“文件与批处理文件位于同一文件夹中。
Python代码是:
import os,sys
import psse34
import psspy
print('we are in the program')
args_num = len(sys.argv) - 1
psspy.psseinit()
for f_name in sys.argv[1:]:
print f_name
psspy.read(0,f_name)
f_name_out = os.path.splitext(f_name)[0] + "_V34.RAW"
psspy.rawd_2(0,1,[1,1,1,0,0,0,0],0,f_name_out)主要问题是当我双击批处理文件时,程序运行正常,打印第一条消息并初始化PSSE程序。但是,当我将文件拖放到批处理脚本上时,我得到以下错误:
C:\Python27\python.exe: can't open file 'V34_File_Converter.py': [Errno 2] No such file or directory 这很奇怪,因为它发现如果没有传递其他参数,文件就没有问题。
谢谢你的帮助!
发布于 2019-09-17 13:55:54
Python脚本文件V34_File_Converter.py显然在批处理文件的目录中,因为在批处理文件中引用了没有文件路径的文件。双击批处理文件,在启动cmd.exe处理批处理文件前,Windows将批处理文件目录设置为当前目录。有两个例外:
%SystemRoot%\System32设置为当前目录。%SystemRoot%设置为当前目录。但是批处理文件通常也可以从任何其他目录执行。因此,建议使用完全限定的文件名引用批处理文件中的其他文件。
打开command prompt,运行call /?并阅读输出帮助,说明如何从批处理文件中引用批处理文件参数。参数0始终是用于启动批处理文件处理的字符串。
这里的解决方案是:
"C:\Python27\python.exe" "%~dp0V34_File_Converter.py" %*%~dp0引用了参数0的驱动器和路径,即批处理文件本身,即批处理文件目录的路径,该目录显然也包含Python脚本文件。使用%~dp0引用的路径字符串始终以反斜杠结尾。因此,在将此路径与文件名或文件夹名连接时,不应使用其他反斜杠。
另请参阅:
https://stackoverflow.com/questions/57959619
复制相似问题