【发布时间】:2016-06-21 13:32:57
【问题描述】:
我正在尝试编写一个脚本来复制运行该行:
D:\...\bin>jython.bat D:\...\UploadTest.py
在 python 脚本中,就像通过 cmd 一样。我尝试了各种 subprocess.Popen 命令,但它们都不起作用(都找不到 Errno2 文件)。我目前有
subprocess.Popen([r'D:\...\bin\jython.bat', r'D:\...\UploadTest.py'])
我尝试了其他几种变体。我主要关心命令的 .bat 和 .py 部分之间的空间。我应该只使用 r'' 和两者之间的空格吗?
【问题讨论】:
-
r''或'\\',不能同时使用。 -
如果模块在您的 python 路径上,您是否尝试过仅导入模块?除非有导入保护,否则导入和运行脚本是相同的。
-
使用 os.path.join 防止使用斜线。这是一种多平台方法。 os.path.join
-
@MadPhysicist 如果我想将 .bat 和 .py 作为一行运行,那会起作用吗?我猜有点像一个论点(我不擅长编码词汇)
-
我在这里做了一些假设。假设 #1 是您调用
Popen的代码正在由 jython 运行。假设 #2 是UploadTest.py没有导入保护(if __name__ == '__main__'的行)。如果两者都为真,请将suborocess.Popen...替换为import UploadTest.py。如果UploadTest.py不在您的python 路径上,请先执行sys.path.append('D:\\folder\\containing\\the\\script')。