2013-08-05 54 views
2

我的同事在Python安裝時遇到問題。當運行下面的代碼時,將返回'C:\my\folder\''C:\'而不是當前的工作目錄。當我或其他人在我們的系統上運行腳本時,我們得到'C:\my\folder\'Python os.system()調用在不正確的目錄中運行

我們假設某些全局設置必須導致該問題,所以我有人卸載Python,刪除本地Python2.7文件夾,清理註冊表並重新安裝Python,但它仍然無法正常工作。

注意:我們有大量的遺留腳本,因此修改所有這些腳本以使用子處理是不切實際的。 :(

任何想法

環境:Windows XP中,Python 2.7版

import os 

# 
# This test script demonstrates issue on the users computer when python invokes 
# a subshell via the standard os.system() call. 
# 

print "This is what python thinks the current working directory is..." 
print os.getcwd() 
print 
print 

print "but when i execute a command *from* python, this is what i get for the current working directory" 
os.system('echo %cd%') 

raw_input() 
+0

你的PATH是什麼? – Jiminion

+1

如果您的腳本對其中的文件進行操作,則應該只使用當前的工作目錄。即**不要依賴**作爲程序所在位置或任何其他預定位置的當前工作目錄。 – millimoose

+0

路徑:c:\ Python27 \ Lib \ site-packages \ PyQt4; c:\ python27; c:\ python27 \ scripts;以及一大堆MS Visual Studio與Python無關的東西 – Aquadisco

回答

3

你也可以嘗試這樣的事情

os.chdir("C:\\to\\my\\folder") 
print os.system("echo %CD%") 
raw_input() 

也讓我使用當前的工作目錄不同的方法

cur_dir = os.path.abspath(".") 
+0

第一個代碼的輸出塊爲:'C:\' – Aquadisco

+0

第二個代碼塊中'cur_dir'的值爲'C:\' – Aquadisco

2

os.getcwd()無法保證腳本在被調用時的位置。你的同事可能會以不同的方式調用腳本,或者他的計算機(出於某種原因)以不同的方式處理當前工作目錄。

要得到你應使用以下的實際腳本位置:

import os 
os.path.dirname(os.path.realpath(__file__)) 

正如我寫getcwd一個例子,在同一個腳本上面的線,並從C:\運行它。

結果:

C:\>python C:\Users\pies\Desktop\test.py 
C:\Users\pies\Desktop 
C:\ 

這取決於你真正爲這個腳本的目的是,你是否真的需要當前的工作目錄,或只是目前scripts目錄。作爲一個小警告,這個調用將返回一個不同的目錄,如果你從腳本調用一個腳本,然後使用這個調用。

+0

腳本使用上述系統調用來調用其他應用程序(例如7za)。重寫我們的腳本庫是不切實際的,因爲它爲其他人工作。導致我們相信這是用戶的問題,而不是腳本。 – Aquadisco

+0

是的,這看起來像是一個環境問題。沒有計算機,我不能再幫忙,但祝你好運!如果你知道,讓我知道,這聽起來很有趣。 – Serdalis

相關問題