【问题标题】:python os.path.exists not workingpython os.path.exists 不工作
【发布时间】:2014-04-17 01:32:38
【问题描述】:

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

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

我确定输出文件中列出的第一个目录存在,因为我检查了文件开头的前十几个目录。我一直看到第一个目录确实存在,但我检查过的其余目录不存在。我什至在 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

【问题讨论】:

  • 您能否也添加一个输入文件的样本?
  • 听起来alldirs.txt 不像你想象的那样工作
  • 此外 - 当您使用 .strip() 时,您只删除空格 - 当您检查目录是否存在时,请确保您的字符串中没有 \n、\r 或类似的东西。
  • alldirs.txt 包含相对文件名还是绝对文件名?如果是相对的,你会想用os.getcwd()os.path.join()他们。
  • 谢谢大家。我在上面添加了输入文件的示例。这些目录是绝对路径。

标签: python


【解决方案1】:

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

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?

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

【讨论】:

  • 非常感谢,我会试试这个并回复你。我现在正忙于其他一些工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2023-02-08
相关资源
最近更新 更多