Помогите с 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()
]