Skip to main content
 首页 » 编程设计

python之sys.path.append 不支持 os.system 命令

2025年05月04日21yxwkf

我有一个非常简单的 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 版本,(虽然我不认为这是罪魁祸首。)

请您参考如下方法:

通常,sys 指的是 Python 系统,而不是整个操作系统。由于您试图调用 Python 之外的东西,它属于 os 的权限,而不是 sys。

具体来说,sys.path is for importing Python modules.但是您不是在调用 Python 代码:您是在调用系统外壳,即您使用 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提供大小写不变的接口(interface))。

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