我正在尝试使用openpyxl工具在现有工作簿中编写内容。
但是我得到了Err no 22而且不知道为什么。
我的脚本看起来像这样:
#Reading & writing to a workbook
from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.cell import get_column_letter
wb = Workbook()
dest_filename = 'J:\Python_Script\book2.xls'
ws = wb.active
ws.title = "Tabelle 1"
for col_idx in range(1, 40):
col = get_column_letter(col_idx)
for row in range(1, 600):
ws.cell('%s%s'%(col, row)).value = '%s%s' % (col, row)
ws = wb.create_sheet()
ws.title = 'Pi'
ws['F5'] = 3.14
wb.save(filename = dest_filename)
这是控制台输出,其中包含错误消息:
// ------------------
Traceback (most recent call last):
File "J:/Python_Script/xlsx_test.py", line 26, in <module>
wb.save(filename = dest_filename)
File "build\bdist.win32\egg\openpyxl\workbook\workbook.py", line 281, in save
save_workbook(self, filename)
File "build\bdist.win32\egg\openpyxl\writer\excel.py", line 214, in save_workbook
writer.save(filename)
File "build\bdist.win32\egg\openpyxl\writer\excel.py", line 196, in save
archive = ZipFile(filename, 'w', ZIP_DEFLATED)
File "C:\Python27\lib\zipfile.py", line 752, in __init__
self.fp = open(file, modeDict[mode])
IOError: [Errno 22] invalid mode ('wb') or filename: 'J:\\Python_Script\x08ook2.xls'
// ----------------------
我不确定为什么文件路径现在不同,文件名也与输入部分的文件名不同。
感谢
编辑:
解决。只需要从\改变到路径中的。
答案 0 :(得分:2)
在Python中,\
在字符串中用于转义字符。您可以通过在前缀“r”之前使用“原始字符串”来避免这种情况。所以r'J:\Python_Script\book2.xls'
应该有用。
但是,在使用路径时,最常见的是使用os.path
模块来确保这是正确的。
dest_filename = os.path.join("J:", "Python_Script", "book2.xlsx")
在编写可移植代码时,这是非常宝贵的。