sys.path.append不支持os.system命令?

时间:2016-01-05 16:50:15

标签: python gdal

我有一个非常简单的python脚本,它使用os.system来运行GDAL命令。它是 - >列出目标文件 - >循环他们 - >尝试os.system gdal_translate命令。在过去,我只是在脚本顶部有一行

sys.path.append(r"C:\OSGeo4w\bin")

我的os.system命令是

os.system("gdal_translate -of GTiff "+fullPFD+" "+fullNewName+" "+"-co COMPRESS=NONE --config GDAL_PDF_DPI "+res)

fullPDF是目标PDF的完整路径,fullNewName与“.tif”代替'.pdf'是一回事,res是我想要的分辨率。

这在过去有效。现在,当我运行脚本时,没有启动命令提示符。代码不会中断,并且使用位于os.system周围的打印命令。代码根本没有运行os.system gdal命令。

  • 请避免在Python IDE中讨论直接的GDAL模块。我一直在那条路上失败了。我需要一个快速回答,即os.system
  • 需要注意的其他事项是,自从我去年运行此脚本以来,我已经安装了2个以上的python版本,(虽然我认为这不是罪魁祸首。)

1 个答案:

答案 0 :(得分:8)

通常,sys指的是 Python 系统,而不是整个操作系统。由于您尝试在Python之外调用某些内容,因此它属于os的范围,而不是sys

具体来说,sys.path is for importing Python modules.但是您没有调用Python代码:您正在调用系统shell,即您使用os.system转义到的Python之外的解释器。在Windows上,这是cmd.exe。系统shell不使用sys.path;相反,它的路径在环境变量PATH中指定。

可以从Python访问环境变量 - 在这种情况下,您可以查询并将其值更改为os.environ['PATH']。它的值是一个字符串,而不是一个列表,所以你不能.append()。相反,你可能会说:

bin_directory = r"C:\OSGeo4w\bin"
os.environ['PATH'] += os.path.pathsep + bin_directory

在Windows上,os.path.pathsep是分号。在类似POSIX的系统上,它将是一个冒号。在这两种类型的操作系统上,相关变量可以'PATH'访问(在Windows上它真的是'Path',但很高兴os.environ提供了一个不区分大小写的接口。)

旁注:os.system快速,脏,并且正在被弃用。有关替代方案,请参阅Calling an external command in Python