Итак, я создаю кучу временных файлов из резервных копий некоторых документов Google в python. Я уже сделал соответствующие копии этих файлов os.copy. Теперь я готов их удалить. Я создал их так:
line = entry.id.text
title = entry.title.text
splitLine = line.split('/')
key = splitLine[-1]
backUpDir = R'\\XXX\XXXXX\XXXX\XXXXX\otherFiles\GoogleDocBackUp' + '\\'
today = datetime.date.today()
if not os.path.exists(backUpDir + str(today)):
os.mkdir(backUpDir + str(today))
backupDir = backUpDir + str(today)
tempfile.tempdir = backupDir
file_path = tempfile.mkstemp(suffix='.xls')
uri = 'http://docs.google.com/feeds/documents/private/full/%s' % key
spreadsheets_client = gdata.spreadsheet.service.SpreadsheetsService()
spreadsheets_client.email = self.gd_client.email
spreadsheets_client.password = self.gd_client.password
spreadsheets_client.source = "My Fancy Spreadsheet Downloader"
spreadsheets_client.ProgrammaticLogin()
# ...
docEntry = self.gd_client.GetDocumentListEntry(uri)
docs_auth_token = self.gd_client.GetClientLoginToken()
self.gd_client.SetClientLoginToken(spreadsheets_client.GetClientLoginToken())
self.gd_client.Export(docEntry, file_path[1])
shutil.copy(file_path[1], backupDir + '//' + title + '.xls')
self.gd_client.SetClientLoginToken(docs_auth_token)
os.close(file_path[0])
Я рассматривал создание файла tempfile.Temporary вместо mkstemp, но получал ошибки прав доступа. (Подозреваю, что временный файл пытался удалить каталог, который я ему дал)
Итак, вернемся к сути проблемы. Я пытаюсь использовать os.remove для этих временных файлов, и python не откажется от них. (Я знаю, что мой код os.remove работает, потому что я запустил эту функцию для некоторых оставшихся временных файлов, и они были удалены без проблем.)
Я хотел бы некоторые здесь - Если я могу удалить временные файлы - отлично. Если я не могу, можно ли переименовать файл на месте в python?
До сих пор я получил несколько предложений о захвате дескриптора файла, который mkstemp ДОЛЖЕН вернуть... но мне не повезло. Когда я смотрю на него в отладчике, я вижу только целое число и путь к файлу.
ОБНОВИТЬ! Я думаю, что исправил это: мне просто нужно было вызвать os.close на пути к файлу [0], и похоже, что он закрылся! Всем спасибо! Вот обновленный код
Спасибо еще раз.