所以,我喜欢xlsxwriter,我可能只是在我的方法中做了一些“unpythonic”,但我想用一个外部文件来定义我的格式,这样我就可以把它拉到我所有的其他代码中,这样我可以使用一致的格式而无需重复复制格式代码。
作为一个过于简化的例子,如果我用这些内容创建一个名为“table_formats.py”的文件:
def format_tables(myworkbook):
# Create a format for a bolded title:
myheader_format = myworkbook.add_format({
'bold': True,
'font_size': 14,
'text_wrap': False
})
...然后,在这里跳过一堆其他代码,我在我的主程序中调用add_format函数:
from table_formats import *
format_tables(myworkbook)
...运行没有错误,但是当我尝试使用这样的格式时:
myworksheet.write(whichrow, whichcol, 'Big Data', myheader_format)
...它会抛出错误:
NameError: name 'myheader_format' is not defined
注意:如果格式在同一个python文件中,我的格式就可以工作,只要它们是通过外部模块中的函数定义的。我认为这是一种常见的设计模式,但未发现任何类似的问题。我对python很新,所以再次可能只是从根本上说“unpythonic”,我在这里做错了。谢谢你的帮助!
答案 0 :(得分:1)
你的format_tables
函数只声明一个局部变量,它在你调用函数的那一刻就消失了。
您可以更改功能以返回新创建的格式:
def format_tables(workbook):
# Create a format for a bolded title:
myheader_format = workbook.add_format({
'bold': True,
'font_size': 14,
'text_wrap': False
})
return myheader_format
并在另一个模块中使用它,如:
from table_formats import format_tables
myheader_format = format_tables(myworkbook)