当前位置:  开发笔记 > 编程语言 > 正文

sys.path.append不适合os.system命令?

如何解决《sys.path.append不适合os.system命令?》经验,为你挑选了1个好方法。

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

jez.. 8

通常,sys指的是Python系统,而不是整个操作系统.因为你试图在Python之外调用某些东西,所以它属于范围os,而不是sys.

具体来说,sys.path是用于导入Python模块.但是你没有调用Python代码:你正在调用系统shell,即你正在逃避使用的Python之外的解释器os.system.在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快速,脏,并且正在被弃用.有关替代方法,请参阅在Python中调用外部命令



1> jez..:

通常,sys指的是Python系统,而不是整个操作系统.因为你试图在Python之外调用某些东西,所以它属于范围os,而不是sys.

具体来说,sys.path是用于导入Python模块.但是你没有调用Python代码:你正在调用系统shell,即你正在逃避使用的Python之外的解释器os.system.在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快速,脏,并且正在被弃用.有关替代方法,请参阅在Python中调用外部命令

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有