os.path.isfile 使用误区

来源:互联网 发布:筑山殿 知乎 编辑:程序博客网 时间:2024/06/05 16:51
下列这几条语句,看出什么问题了不?

for file in os.listdir(path):
        if os.path.isfile(file) and os.path.splitext(file)[1] == '.txt':
            #打开txt文件,并提取数据

冥思苦想,没错啊,为啥 os.path.isfile(file)返回的就是false呢。
>>> os.listdir(path)
['cg.A.1.txt', 'cg.A.128.txt', 'cg.A.16.txt', 'cg.A.2.txt', 'cg.A.256.txt', 'cg.
A.32.txt', 'cg.A.4.txt', 'cg.A.512.txt', 'cg.A.64.txt', 'cg.A.8.txt', 'cg.B.1.tx
t', 'cg.B.128.txt', 'cg.B.16.txt', 'cg.B.2.txt', 'cg.B.256.txt', 'cg.B.32.txt',
'cg.B.4.txt', 'cg.B.512.txt', 'cg.B.64.txt', 'cg.B.8.txt', 'cg.C.1.txt', 'cg.C.1
28.txt', 'cg.C.16.txt', 'cg.C.2.txt', 'cg.C.256.txt', 'cg.C.32.txt', 'cg.C.4.txt
', 'cg.C.512.txt', 'cg.C.64.txt', 'cg.C.8.txt', 'cg.D.128.txt', 'cg.D.16.txt', '
cg.D.256.txt', 'cg.D.32.txt', 'cg.D.512.txt', 'cg.D.64.txt']
>>> files = os.listdir(path)
>>> os.path.isfile(files[1])
False

试验了多次,仍然是False, 我去,什么鬼.....

开始Google,看到一些目录操作,无果....

遂查看python自带帮助,终于找到了答案,泪奔....
os.path.isfile(path)

Return True if path is an existing regular file. This follows symbolic links, so both islink() and isfile() can be true for the same path.



注意:path是路径.....
而我传的是一个文件名.

解决方法就是:
>>> os.path.isfile(os.path.join(path,files[1]))
True

搞定!

0 0
原创粉丝点击