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

Python sys.path.append不支持os.system命令?,python,gdal,Python,Gdal,我有一个非常简单的python脚本,它使用os.system运行GDAL命令。它是->列出目标文件->循环它们->尝试os.system gdal\u translate命令。在过去,我只是在剧本的顶部写了一行 sys.path.append(r"C:\OSGeo4w\bin") 我的操作系统命令是 os.system("gdal_translate -of GTiff "+fullPFD+" "+fullNewName+" "+"-co COMPRESS=NONE --config GDAL

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

sys.path.append(r"C:\OSGeo4w\bin")
我的操作系统命令是

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
  • 其他需要注意的是,自从我去年运行这个脚本以来,我又安装了两个python版本(尽管我不认为这是罪魁祸首)

一般来说,
sys
指的是Python系统,而不是整个操作系统。因为您试图调用Python之外的东西,所以它属于
os
的权限范围,而不是
sys

具体来说,但您并没有调用Python代码:您正在调用系统shell,即Python之外的解释器,您正在使用
os.system
转义到该解释器。在Windows上,这是
cmd.exe
。系统外壳不使用
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
速度快,脏兮兮,即将被弃用。有关替代方案,请参见

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

具体来说,但您并没有调用Python代码:您正在调用系统shell,即Python之外的解释器,您正在使用
os.system
转义到该解释器。在Windows上,这是
cmd.exe
。系统外壳不使用
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
速度快,脏兮兮,即将被弃用。有关备选方案,请参见

您的程序(gdal_translate)是否在
路径
环境变量中?您的程序(gdal_translate)是否在
路径
环境变量中?谢谢jez。而你的操作系统又快又脏。以后会尽量避免的。谢谢你,杰兹。而你的操作系统又快又脏。我以后会尽量避免的。