2012-05-19 3 views
0

Я столкнулся с IOError в Python, который я не могу понять. У меня есть относительно простой скрипт, который извлекает различные научные статьи и организует их в структуру каталогов.Python IOError: невозможно открыть два файла

Вызов записи каждого выходного файла здесь (в обмен на каждого цикла):

 (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

Не уверен, что они больше, чем первая, перечисленная выше, а вторая - средняя длина. Не удается ли python открыть имена файлов определенной длины? –

+4

Вы пытались открыть '/path/to/file/text.html.txt', чтобы узнать, работает ли этот путь? – garnertb

ответ

0

Оглядываясь назад, я должен был разместить свое решение в качестве ответа, а не просто оставить его в комментариях.

Проблема связана с длиной абсолютного пути к файлу (а не только от имени файла!). Обрезка их до менее 325 символов сделала трюк. Что-то вроде:

article = article[:325-len(current_dir)] 
out.write(os.path.join(current_dir, article + '.txt')) 
Смежные вопросы