У меня есть скрипт python, который анализирует дерево файлов и записывает его результаты в xlsx.Openpyxl - проблема с названием рабочей книги
Анализ идет хорошо, но когда я пытаюсь записать свои результаты, я получаю сообщение об ошибке:
Traceback (most recent call last):
File ".\call_validation.py", line 103, in <module>
wb.save(wb_name)
File "C:\Python\lib\site-packages\openpyxl\workbook\workbook.py", line 298, i
save_workbook(self, filename)
File "C:\Python\lib\site-packages\openpyxl\writer\excel.py", line 196, in sav
writer.save(filename, as_template=as_template)
File "C:\Python\lib\site-packages\openpyxl\writer\excel.py", line 178, in sav
archive = ZipFile(filename, 'w', ZIP_DEFLATED)
File "C:\Python\lib\zipfile.py", line 923, in __init__
self.fp = io.open(file, modeDict[mode])
OSError: [Errno 22] Invalid argument: 'move_generated-2015-05-07 10:08:26.xlsx'
Я генерируя мое имя файла, используя datetime.datetime.now()
так:
save_time = str(datetime.datetime.now()).split(".")[0]
wb_name = "move_generated-" + save_time + ".xlsx"
wb.save(wb_name)
Я не» t верят, что имя файла слишком длинное, его только в C:\code\call_flow
, и я попытался удалить все не буквенно-цифровые символы из имени. Есть идеи?
EDIT: Решение закончилось тем, что я не смог скрыть двоеточия от времени. Как сказал @nivix Zixer я установил его, заменив
save_time = str(datetime.datetime.now()).split(".")[0]
с
save_time = str(datetime.datetime.now()).split(".")[0].replace(':', '_')
Возможно, проблема в том, что у вас есть место в имени файла? Попытайтесь заменить свою 'str (datetime.datetime.now()). Split (". ") [0]' с этим: 'str (datetime.datetime.now()). Split (". ") [0]. replace ('', '_') ' –
Спасибо, это было то, что мне нужно. Если вы хотите опубликовать ответ, я соглашусь с ним. – Will
Просто форматируйте 'datetime', используя' strftime' в следующий раз. Https: //docs.python.org/2/library/datetime.html –