0

有没有办法在 Python 中设置终端路径?我有一些已编译的二进制文件,我想在文件夹中使用,我们就说foo.exein C:/Program Files/PostgreSQL/9.2/bin,我认为osorsys模块中必须有一些可以工作的东西,但我找不到任何东西:

# This works, but ugly
psqldir = 'C:/Program Files/PostgreSQL/9.2/bin'
currentdir = os.getcwd()
os.chdir(psqldir)
os.system('foo')
os.chdir(currentdir)

# Does not work
os.system('set PATH=%PATH%;C:/Program Files/PostgreSQL/9.2/bin')
os.system('foo')

# Does not work
sys.path.append('C:\\Program Files\\PostgreSQL\\9.2\\bin')
os.system('foo')

谢谢!

4

2 回答 2

3

像这样的东西应该工作......

import os

psqldir = 'C:/Program Files/PostgreSQL/9.2/bin'
os.environ['PATH'] = '%s;%s' % (os.environ['PATH'], psqldir)
os.system('foo')

...或者只是foo.exe通过它的完整路径调用...

os.system('C:/Program Files/PostgreSQL/9.2/bin/foo')

但是,正如kindall(现已删除)的答案所建议的那样,值得注意的是os.system()文档中的这一段......

subprocess模块提供了更强大的工具来生成新进程并检索其结果;使用该模块优于使用此功能。有关一些有用的秘诀,请参阅文档中的用子流程模块替换旧功能 部分。subprocess

于 2013-04-25T15:17:04.203 回答
1

我的理解是你需要添加一个环境变量。我认为您应该能够使用 os.system/os.environ 或 subprocess 来做到这一点。还考虑到您在 Windows 上,您可能需要查看这些文章

http://code.activestate.com/recipes/416087/

http://code.activestate.com/recipes/159462/

于 2013-04-25T15:22:29.097 回答