在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'
这篇文章和这个postbuild议在文件名之前加上r
。 我已经尝试过了(如上面的日志中所见)。 并且该文件位于当前目录中,所以这不是反斜杠或正斜杠的问题。 该文件可以在OS X和Windows上的Excel中打开。 还有什么可能是这个问题? 不幸的是,我没有自己的Windows mahcine,所以不能在那里直接排除故障。
保存的文件最初是直接在Excel中创build的,还是使用openpyxl
?
这可能是一个权限错误,与openpyxl无关。 使用r
的想法是完全错误的。 使用os.path
编写一个路径,其中任何用户正在运行脚本都有权写入。