这里的文件存在,100%:
path = "~/Music/Youtube_dl/Some Artist - 'On + Off'.m4a"
assert os.path.exists(path)
但上述情况总是失败。
如果我将实际文件名更改为test_file.m4a并执行:
path = "~/Music/Youtube_dl/test_file.m4a"
assert os.path.exists(path)
一切正常。
因此文件名中的问题是100%。但是,我无法解决这个问题。我已经尝试在字符串和各种其他解决方案之前添加u
,但似乎没有任何帮助。
注意:我从外部来源获取文件名,并且无法控制其中一些文件中包含单引号/引号的事实。
答案 0 :(得分:2)
~
是shell构造,python对此一无所知。即使os.path.exists('~')
失败了。假设它已导出,我们可以使用环境变量HOME
:
import os
import os.path
path = "~/Music/Youtube_dl/Some Artist - 'On + Off'.m4a"
path = path.replace('~', os.environ['HOME'])
assert os.path.exists(path)
替代方案,您可以使用os.path.expanduser
(相当便携):
import os.path
path = "~/Music/Youtube_dl/Some Artist - 'On + Off'.m4a"
path = os.path.expanduser(path)
assert os.path.exists(path)