0

Pythonでターミナルパスを設定する方法はありますか? フォルダで使用したいコンパイル済みのバイナリがいくつかあります。たとえばfoo.exe、 .C:/Program Files/PostgreSQL/9.2/binossys

# 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 に答える