2016-01-03 151 views
1

我正在嘗試構建一個模擬Windows環境中「運行」功能的程序。現在我知道這聽起來有點愚蠢,但我們是在「有限」的計算機上,並且cmd已完全鎖定,所以我們別無選擇,只能根據我們的需要構建自己的程序文件。在Python中使用空格執行Windows路徑

具體來說,我想要做的是一個小實用程序,它會詢問驅動器,主題和課程編號,並基於該實用程序打開完整路徑。

即w^Python的47 - >女://課程/主題/蟒蛇/班/ 47 - 陣列&指針

我已經做了最Python中的工作,並達到最後階段,我需要僅基於與代碼是類似數量的完整路徑:

os.system(start 'drive + '://courses/subjects/' + subject + '/classes/' + class') 

其中驅動器,主題和類是保持當前路徑的數據變量。

問題是,當文件路徑中有空格時,Windows找不到它,併產生錯誤。

簡單的解決方案將是把雙引號,但在啓動命令因故雙引號被視爲其阻止了cmd命令..

一個解決辦法的任何想法,或者也許Python是不是要走的路,以及對不同語言的任何想法,這會更容易。 (我有C++,Python,Java的基礎知識)

p.s.這不是我正在使用的確切代碼,我將在明天發佈。

+3

爲什麼要標記完全不相關的實體,如Java和C++?最好把你的問題限制在一種語言中,否則它看起來會(並且實際上會)太寬泛。編輯:我已經爲你刪除了這些標籤。 –

+1

看看http://stackoverflow.com/questions/204017/how-do-i-execute-a-program-from-python-os-system-fails-due-to-spaces-in-path –

+0

你可能會發現子進程更易於使用https://docs.python.org/2/library/subprocess.html –

回答

1

start之後的第一個參數是新創建的命令提示符窗口的名稱,第二個和第三個參數應該分別是應用程序及其參數的路徑。

start "" "c:\path with spaces\app.exe" param1 "param with spaces" 

如果你想使用os.system,你可以嘗試:

norm_path = os.path.normpath("{0}://courses/subjects/{1}/classes/{2}".format (drive, subject, class_name)) 
os.system('start "" "' + norm_path + '"') 

但我可能會使用os.startfile

norm_path = os.path.normpath("{0}://courses/subjects/{1}/classes/{2}".format (drive, subject, class_name)) 
os.startfile(norm_path) 

請注意:你不應該使用一個變量命名爲class

+0

實際上,一個*無法使用名爲'class'的變量。這是一個關鍵字。 – eryksun

+0

完美無瑕,非常感謝。 –

相關問題