Python sys.path.append不支持os.system命令?
我有一个非常简单的python脚本,它使用os.system运行GDAL命令。它是->列出目标文件->循环它们->尝试os.system gdal\u translate命令。在过去,我只是在剧本的顶部写了一行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
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。而你的操作系统又快又脏。以后会尽量避免的。谢谢你,杰兹。而你的操作系统又快又脏。我以后会尽量避免的。