python os.path.exists不工作

时间:2014-03-12 17:40:37

标签: python

我提前道歉,因为我对python很新,我写了一个我认为是一个非常简单的脚本来查找丢失的目录。该脚本一次从一个文件读入一行(每行包含一个unix样式目录),然后检查该目录是否存在,如果该目录不存在则显示一条消息并将该目录写入outputfile

问题是我在输出文件中有目录存在而且我不确定为什么会这样......

我确定输出文件中列出的第一个目录存在,因为我从文件开头检查了前十二个目录。我一直看到第一个目录确实存在,但我检查的其余目录没有。我甚至在python交互模式下运行相同的检查,它返回True,所以我不明白为什么这个目录被写入输出文件。

任何想法?

import os
f = open('missingdirs.out', 'w')
for line in file('alldirs.txt', 'r'):
     if not os.path.exists(line.strip()):
          print "Could not find the path specified: " + line.strip()
          f.write(line.strip()+'\n')
f.close()

下面的输入文件示例(这些是绝对路径):

/home/sites/shared/lingui/course/0418-0001_AUT_Can
/home/sites/shared/lingui/course/0418-0001_AUT_Do
/home/sites/shared/lingui/course/0418-0001_AUT_How
/home/sites/shared/lingui/course/0418-0001_AUT_Is-Are
/home/sites/shared/lingui/course/0418-0001_AUT_What
/home/sites/shared/lingui/course/0418-0001_AUT_When
/home/sites/shared/lingui/course/0418-0001_AUT_Where

1 个答案:

答案 0 :(得分:0)

一些简单的故障排除步骤......

with open('alldirs.txt','r') as in_:
    lines = list(map(str.strip,in_.readlines()))
print('\n'.join(lines[:10]))
# maybe your input is not what you think it is

import os
path = r"/home/sites/shared/lingui/course/0418-0001_AUT_Can"
print(os.path.exists(path))
# use a string literal rather than the file read -- does THAT work?

我几乎可以保证问题在于您的输入文件格式不正确。