2014-04-06 49 views
0

我的Python代碼有問題:我想要做的是要求用戶輸入文件的路徑,然後打開並處理 這裏的問題是我無法控制什麼用戶可以輸入,例如路徑爲:"C:\0_dir\test\file.txt"我無法打開文件,當我嘗試打印給定的路徑時,我得到:"C: _dir est ile.txt",這樣即使我嘗試:my_path.replace ("\ \", "/")它也不起作用。我知道斜線是問題的原因,但我不明白如何解決這個問題,因爲我無法控制給定的路徑 如果有人已經有這個問題,或者如果有人有任何想法,我會很感謝 謝謝啓用打開無控制路徑

編輯

謝謝你的答案..我沒有使用的投入,得到實際上這是一個有點複雜的路徑:這是我的代碼如下所示:

command=' test.exe -o"a/b/c/f.txt" -i"C:\0_dir\test\file.txt" -f"x/y/z"' 
pathToFile=[x for x in command.split() if x.startswith("-i")] 
my_path=pathToFile[0].replace("-i","") 
mfile=open(my_path,"r") 
contenu=mfile.readlines() 
+1

你使用Python 2和'input()'來獲取路徑嗎? –

+0

謝謝你的答案..但我沒有使用輸入@MartijnPieters – user3328690

+0

那麼你爲什麼說你要求用戶的路徑? –

回答

1

我強烈懷疑您正在使用Python 2中的input()函數詢問用戶路徑輸入。如果是這樣,你真的想用raw_input()來代替。

input()試圖解釋給定用戶的文本作爲一個Python表達式,此時你的用戶必須使用路徑周圍的報價,並且無論使用向前斜槓(這在Windows上工作過),原始字符串字面量( r"C:\0_dir\test\file.txt")或雙斜槓,否則反斜槓可以解釋爲轉義序列的開始; \0被解釋爲八進制字節值,\t是作爲換頁控制代碼的選項卡和\f

使用raw_input()你有沒有這些問題:

>>> input('Give a path: ') 
Give a path: "C:\0_dir\test\file.txt" 
'C:\x00_dir\test\x0cile.txt' 
>>> raw_input('Give a path: ') 
Give a path: C:\0_dir\test\file.txt 
'C:\\0_dir\\test\\file.txt' 

其中Python的回顯在所得到的值作爲一個有效的Python字符串文字,使用轉義序列非打印字符(如空值字節和製表符),並加倍斜線以避開它們。字符串的實際有單斜槓:

>>> print 'C:\\0_dir\\test\\file.txt' 
C:\0_dir\test\file.txt 

您發佈的代碼應該使用一倍反斜槓代替:

command = 'test.exe -o"a/b/c/f.txt" -i"C:\\0_dir\\test\\file.txt" -f"x/y/z"' 

和你的代碼是不是去掉引號,仍在部分串。