2017-04-12 33 views
0

Python的shutil似乎無法使用文件路徑的~符號。這是使用公共密鑰,但shutil似乎無法找到這些文件時,這是在文件路徑:在文件路徑中使用〜符號時python shutil ioerror

其中:

file2copy 
Out[5]: '~/folder1/folder2/file.txt' 

產生這樣的錯誤:

File "/home/user/script.py", line 1192, in <module> 
    shutil.copy2(file2copy, newpath+'/newfilename.txt') 

    File "/home/user/anaconda2/envs/rootclone/lib/python2.7/shutil.py", line 130, in copy2 
    copyfile(src, dst) 

    File "/home/user/anaconda2/envs/rootclone/lib/python2.7/shutil.py", line 82, in copyfile 
    with open(src, 'rb') as fsrc: 

IOError: [Errno 2] No such file or directory: '~/folder1/folder2/file.txt' 

我不確定這是一個錯誤還是隻是~鍵不能在python中使用。希望能夠解決這個問題。我知道我可以使用精確的文件路徑來解決這個問題,但~鍵對於在用戶之間切換等是有用的(不必重置工作目錄等)

回答

2

~是一個shell結構。

你應該使用os.path.expanduser(),例如:

os.path.expanduser('~/folder1/folder2/file.txt') 

會導致類似:

'/home/username/folder1/folder2/file.txt' 
+0

完美,謝謝! – mjp

+0

非常歡迎! – bernie

1

無法使用您嘗試使用的用戶的相對路徑,因爲它會直接將「〜」符號解釋爲字符串的一部分,而不像終端解釋它。

在你的情況下,你實際上必須把完整路徑tho文件。

這將是這樣的:

/home/user/folder1/folder2/file.txt