Python 2.7 os.path.isfile

时间:2016-03-21 21:33:55

标签: python python-2.7

我正在测试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

3 个答案:

答案 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'