2013-04-25 222 views
0

有沒有辦法在Python中設置終端路徑?我有一些編譯的二進制文件,我希望在一個文件夾中使用,我們只需說在C:/Program Files/PostgreSQL/9.2/bin,我想在ossys模塊中必須有某些東西可以工作,但我找不到任何:在Python中設置路徑

# 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') 

謝謝!

+1

'使用os.system()'?不好... – glglgl 2013-04-25 15:18:05

+0

Ouch。有更好的風格嗎?我願意提出建議。 – elleciel 2013-04-25 15:19:44

+2

@ephedyn查看kindall的答案的最後一句。 – Aya 2013-04-25 15:20:34

回答

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文檔中的Replacing Older Functions with the subprocess Module 部分以獲取一些有用的配方。

+0

+1爲完整路徑調用,-0.4爲不推薦'subprocess',則爲+0.6,舍入爲+1。 – glglgl 2013-04-25 15:32:53

+1

@glglgl我以爲用'kindpro'的'subprocess'的建議是不禮貌的,但現在他已經刪除了,我會加入它。 – Aya 2013-04-25 15:35:12