Помогите с IOError для чтения файлов

for subdir, dirs, files in os.walk(crawlFolder):
    for file in files:
         print os.getcwd()
         f=open(file,'r')
         lines=f.readlines()
         writeFile.write(lines)
         f.close()
writeFile.close()   

Я получаю ошибку как:-

IOError: [Errno 2] Нет такого файла или каталога

В отношении моего частичного кода на Python выше:-

напечатать os.getcwd() -> C:\search engine\taxonomy

однако файл находится в каталоге "C:\search engine\taxonomy\testFolder"

Я знаю, что ошибка в том, что она работает в текущем каталоге, и мне нужно как-то добавить каталог testFolder с файлом. Может ли кто-нибудь исправить мой код и помочь мне с этим? Спасибо.

1 ответ

Решение

subdir переменная дает вам путь от crawlFolder в каталог, содержащий fileтак что вам просто нужно пройти os.path.join(crawlFolder, subdir, file) в open вместо голого file, Вот так:

for subdir, dirs, files in os.walk(crawlFolder):
    for file in files:
         print os.getcwd()
         f=open(os.path.join(crawlFolder, subdir, file),'r')
         lines=f.readlines()
         writeFile.write(lines)
         f.close()
writeFile.close()

Кстати, это более эффективный способ скопировать файл в другой файл:

for subdir, dirs, files in os.walk(crawlFolder):
    for file in files:
         print os.getcwd()
         f=open(os.path.join(crawlFolder, subdir, file),'r')
         writeFile.writelines(f)
         f.close()
writeFile.close()

[РЕДАКТИРОВАТЬ: Не могу устоять перед искушением играть в гольф:

for subdir, dirs, files in os.walk(crawlFolder):
    for file in files:
         writeFile.writelines(open(os.path.join(crawlFolder, subdir, file)))
writeFile.close()

]

Другие вопросы по тегам