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

python shutil ioerror when using the ~ symbol in filepaths

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 中使用。希望对此有所解决。我知道我可以使用确切的文件路径来解决这个问题,但是 ~ 键对于在用户之间进行更改等很有用(无需重置工作目录等)

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

在您的情况下,您实际上必须输入文件的完整路径。

那会是这样的:

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

~ 是一个 shell 结构。

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

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

会产生类似这样的结果:

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