在文件路径中使用〜符号时出现python shutil ioerror

时间:2017-04-12 14:18:14

标签: python shutil ioerror

Python的shutil似乎无法将~符号用于文件路径。这是一个常用的密钥,但是shutil似乎无法在文件路径中找到这些文件:

其中:

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 个答案:

答案 0 :(得分:2)

~是一个shell构造。

您应该使用os.path.expanduser(),例如:

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

会导致类似:

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

答案 1 :(得分:1)

无法使用您尝试使用的用户的相对路径,因为它会将“〜”符号解释为字符串的一部分,而不是终端解释它。

在你的情况下,你实际上必须把完整的路径文件。

这就像是:

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