我在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多个文档看起来或多或少相同。例如,其他文档以数字开头,它们在打印时打开没有问题。此外,这些文章试图写入已经打印过其他文章的同一目录。我会怀疑第一种情况下的长度问题,但这不是第二种问题。
有什么我想念的吗?谢谢你的帮助!
答案 0 :(得分:0)
回顾过去,我应该将我的解决方案作为答案发布,而不是将其留在评论中。
问题与绝对文件路径的长度有关(不仅仅是文件名!)。将这些修剪为少于325个字符就可以了。类似的东西:
article = article[:325-len(current_dir)]
out.write(os.path.join(current_dir, article + '.txt'))