Openpyxl - 麻烦命名工作簿
Openpyxl - trouble naming workbook
我有一个 python 脚本来分析文件树并将其发现记录在 xlsx 中。
分析进行得很顺利,但是当我尝试记录结果时,出现错误:
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)
我不认为文件名太长,它只在 C:\code\call_flow
中并且我已经尝试从名称中删除所有非字母数字字符。有什么想法吗?
编辑:最终的解决方案是我当时未能去除冒号。正如@nivix zixer 所说,我通过替换
来修复它
save_time = str(datetime.datetime.now()).split(".")[0]
和
save_time = str(datetime.datetime.now()).split(".")[0].replace(':', '_')
也许问题是您的文件名中有 space?
将 str(datetime.datetime.now()).split(".")[0]
替换为:str(datetime.datetime.now()).split(".")[0].replace(' ', '_')
.
很高兴我能帮助威尔!
我有一个 python 脚本来分析文件树并将其发现记录在 xlsx 中。
分析进行得很顺利,但是当我尝试记录结果时,出现错误:
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)
我不认为文件名太长,它只在 C:\code\call_flow
中并且我已经尝试从名称中删除所有非字母数字字符。有什么想法吗?
编辑:最终的解决方案是我当时未能去除冒号。正如@nivix zixer 所说,我通过替换
来修复它save_time = str(datetime.datetime.now()).split(".")[0]
和
save_time = str(datetime.datetime.now()).split(".")[0].replace(':', '_')
也许问题是您的文件名中有 space?
将 str(datetime.datetime.now()).split(".")[0]
替换为:str(datetime.datetime.now()).split(".")[0].replace(' ', '_')
.
很高兴我能帮助威尔!