即使在文件名前加上 'r',openpyxl 也无法在 Windows 上保存

Even with 'r' prepended to filename, openpyxl not able to save on Windows

在 OS X 上,openpyxl.save() 对于名为 'all_done.xslx'.

的文件工作正常

然而,当它在 Windows 上尝试时,结果是:

c:\Users\Tony\Desktop\ROI>python roi_cut6.py > log.txt
Traceback (most recent call last):
File "roi_cut6.py", line 373, in <module>
main()
File "roi_cut6.py", line 369, in main
processSource(wb, 'Gemini', totalGeminiSpends, geminiRevenues)
File "roi_cut6.py", line 269, in processSource
wb.save(r'all_done.xlsx')
File "C:\Python27\lib\site-packages\openpyxl\workbook\workbook.py", line 298,
in save
save_workbook(self, filename)
File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 198, in sa
ve_workbook
writer.save(filename, as_template=as_template)
File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 180, in sa
ve
archive = ZipFile(filename, 'w', ZIP_DEFLATED, allowZip64=True)
File "C:\Python27\lib\zipfile.py", line 756, in __init__
self.fp = open(file, modeDict[mode])
IOError: [Errno 22] invalid mode ('wb') or filename: 'all_done.xlsx'

This post and this post建议在文件名前加上r。我已经尝试过了(如上面的日志所示)。并且该文件位于当前目录中,因此反斜杠或正斜杠不是问题。该文件在 OS X 和 Windows 上都可以在 Excel 中打开。还有什么问题?不幸的是,我自己无法访问 Windows 机器,因此无法直接在那里进行故障排除。

要保存的文件最初是直接在 Excel 中创建的还是在 openpyxl 中创建的,这有什么不同吗?

这可能是权限错误,与openpyxl无关。使用 r 的想法是完全错误的。使用 os.path 组成一个路径,其中任何用户 运行 脚本都具有写入权限。