【发布时间】:2014-10-14 18:04:57
【问题描述】:
我正在尝试运行将打开命令提示符的 python 脚本(OSGeo4W.bat 是命令提示符行)。我可以打开它,但现在我想发送命令提示符命令。
import subprocess
myProcess = subprocess.Popen(['C:\OSGeo4W64\OSGeo4W.bat'],shell = False) #opens command prompt
myProcess.communicate('gdal2tiles -p raster -z 0-1 new.jpg abc')
myProcess.wait()
print("my process has terminated")
我也试过
subprocess.check_call('gdal2tiles -p raster -z 0-1 new.jpg abc', shell=False)
我不断收到错误提示“WindowsError: [错误 2] 系统找不到指定的文件”
虽然,如果我要保持它打开的命令提示符并输入“'gdal2tiles -p raster -z 0-1 new.jpg abc'”,那么它将按照我的意愿工作。帮助会很好,谢谢!
【问题讨论】:
-
Windows 让它...有趣。通常,忽略平台,如果您希望能够将标准输入提供给您的进程,则一定要使用
stdin=subprocess.PIPE。 -
也就是说——如果您实际上并不需要 OSGeo4W.bat,您是否尝试过使用
subprocess.Popen(['gdal2tiles', '-p', 'raster', '-z', '0-1', 'new.jpg', 'abc'], shell=False)?如果所有批处理文件都在设置您的 PATH,您可以将其作为参数包含在脚本中,或者完全限定可执行文件名称(r'C:\OSGeo4W64\bin\gdal2tiles'等)。 -
@CharlesDuffy:命令字符串是 Windows 上的本机接口。这里没有必要将其转换为列表。
标签: python command-line subprocess