【问题标题】:Python IOError: Unable to Open Two FilesPython IOError:无法打开两个文件
【发布时间】:2025-11-29 02:15:02
【问题描述】:

我在 Python 中遇到了一个我无法掌握的 IOError。我有一个相对简单的脚本来检索各种科学文章并将它们组织到一个目录结构中。

写每个输出文件的调用在这里(在一个for-each循环中):

        (58)    outfile = open(curr_dir + "/" + article + ".txt",'w')
        (59)    outfile.write("title: " + title + '\n')
        (60)    outfile.write("abstract: " + abstract + '\n')
        (61)    outfile.close()

对于超过一千篇文章,输出文件可以毫无问题地打开和编写。但是,在两个上,它失败,以下 IOError 指向上面显示的第一行:

    Traceback (most recent call last):
    File "script.py", line 58, in <module>
    outfile = open(curr_dir + "/" + article + ".txt",'w')
    IOError: [Errno 2] No such file or directory: '/path/to/file/text.html.txt'

这是两个文件:

    /path/2-minute-not-invasive-screening-for-cardio-vascular-diseases-relative-limitation-of-c-reactive-protein-compared-with-more-sensitive-l-homocystine-as-cardio-vascular-risk-factors-safe-and-effective-treatment-using-the-selective-drug-uptake-enhancementme.html.txt

    /path/expression-of-chemokine-receptors-i-immunohistochemical-analyses-with-new-monoclonal-antibodies-from-the-8th-iifferentiation-antigens.html.txt

据我所知,所有其他 1000 多份文档看起来都差不多。例如,其他文档以数字开头,并且在打印时打开它们没有问题。此外,这些文章正试图写入其他文章已经打印过的同一目录。我会怀疑第一种情况的长度,但第二种情况可能不是问题。

我有什么遗漏吗?感谢您的帮助!

【问题讨论】:

  • 其他文件名的长度与这些相比如何?
  • 不确定是否有比上面列出的第一个更长的,但第二个大约是平均长度。 python是不是无法打开一定长度的文件名?
  • 你试过打开'/path/to/file/text.html.txt'看看路径是否真的有效吗?
  • @DavidC:如果情况确实如此,您能否准确记录您正在使用的路径名,以及您的操作系统和 python 版本?对我来说似乎是一个错误。
  • 我很好奇:你为什么不使用os.path.join

标签: python ioerror


【解决方案1】:

回首往事,我应该将我的解决方案作为答案发布,而不是仅仅将其留在 cmets 中。

问题与绝对文件路径的长度有关(不仅仅是文件名!)。将这些修剪到少于 325 个字符就可以了。比如:

article = article[:325-len(current_dir)]
out.write(os.path.join(current_dir, article + '.txt'))

【讨论】: