我正在测试os.path.isfile(path)方法,看看是不是某个文件。奇怪的是,我发现如果我加入路径和文件名,它返回true,但如果我把完整的文件路径返回false。这是为什么?
import os
path = 'C:\Users\usrname\Documents\test.xlsx'
if os.path.isfile(os.path.join('C:\Users\usrname\Documents','test.xlsx')): #returns yes
print 'yes'
else:
print 'no'
if os.path.isfile(path): #returns no
print 'yes'
else:
print 'no'
Win 7 iPython Notebook上的Python 2.7
答案 0 :(得分:3)
因为路径中的\t
是制表符,而不是两个字符斜杠。使用原始字符串。
path = r'C:\Users\usrname\Documents\test.xlsx'
或转义分隔符
path = 'C:\\Users\\usrname\\Documents\\test.xlsx'
答案 1 :(得分:2)
您的\t
正在转换为标签。
import os
path = 'C:\Users\usrname\Documents\test.xlsx'
print path
# C:\Users\usrname\Documents est.xlsx
path = os.path.join('C:\Users\usrname\Documents', 'test.xlsx')
print path
# C:\Users\usrname\Documents\test.xlsx
为了完全避免转义字符的问题,我建议使用os.path.join
完全构建字符串。
base_dir = os.path.join('C:', 'Users', 'usrname', 'Documents')
print base_dir
# C:\Users\usrname\Documents
path = os.path.join(base_dir, 'test.xlsx')
print path
# C:\Users\usrname\Documents\test.xlsx
答案 2 :(得分:0)
因为os.path.join将路径字符串转换为正确的路径:
' C:\\用户\\ usrname \\文档\\ test.xlsx'