Python3 закрывает дескриптор файла внутри класса
Я пытаюсь закрыть файл внутри класса. Но что бы я ни пытался, оно остается открытым. Так что мой вопрос прост.
Почему не закрывается?
Любая помощь или объяснение очень приветствуется. Заранее спасибо!
import os
class LoopFolders:
def __init__(self, targetFolder):
self.targetFolder = targetFolder
print('Target Folder:', targetFolder)
def closeFile(self):
self.logFile.close()
print('All done!')
def loop(self):
self.logFile = open('FileList.txt', 'w')
for root, subs, files in os.walk(self.targetFolder):
print('Root:', root)
self.logFile.write('Root:\n'+root+'\n')
self.closeFile()
# This doesn't work either:
# self.logFile.close()
# code run example
run = LoopFolders('c:/')
run.loop()
1 ответ
Я решил проблему, поместив части записи под функцией with. Спасибо еще раз за помощь!
import os
class LoopFolders:
def __init__(self, targetFolder):
self.targetFolder = targetFolder
print('Target Folder:', targetFolder)
def loop(self):
with open('fileList.txt', 'w') as self.logFile:
for root, subs, files in os.walk(self.targetFolder):
print('Root:', root)
self.logFile.write('Root:\n')
self.logFile.write(root+'\n')
print('\tSubfolders:', subs)
self.logFile.write('\tSubfolders:\n')
for sub in subs:
self.logFile.write('\t'+sub+'\n')
print('\t\tFiles:\n')
self.logFile.write('\t\tFiles:\n')
for file in files:
try:
print('\t\t', file, '\n')
self.logFile.write('\t\t'+file+'\n')
except:
print('File in', root, 'could not be read')
self.logFile.write('file in '+root+' could not be read')
continue
self.logFile.write('\n\n')
run = LoopFolders('C:/').loop()