def create_and_update_worksheets():
"""
Add 'Player statistics' if the worksheet is not in file_name.
Otherwise, it will update the worksheet itself.
"""
os.chdir(os.path.dirname(os.path.abspath(__file__)))
writer = pd.ExcelWriter(file_name, engine='openpyxl')
row = 0
for item in worksheets['Game Schedule'].values():
multiple_dfs(item, 'Game Schedule')
for sheet in writer.sheets.values():
resize_columns(sheet)
writer.save()
writer.close()
この実際のコードで
、writer
とrow
が定義されていないが、すでに定義されていますが、私はmultiple_dfs
を実装することを決定したかのように私はいくつかのエラーを得ている:私が得たNameError:名前「作家」が
def multiple_dfs(item, sheets):
"""
Put multiple dataframes into one xlsx sheet
"""
response = send_request(item).content
df = pd.read_csv(io.StringIO(response.decode('utf-8')))
df.to_excel(writer, sheets, startrow=row, index=False)
row = row + len(df) + 2
writer
のエラーが発生しましたが、同じことがrow
で発生しました。
Traceback (most recent call last):
File "create_and_update_xlsx_sheets.py", line 66, in <module>
create_and_update_worksheets()
File "create_and_update_xlsx_sheets.py", line 56, in create_and_update_worksheets
multiple_dfs(item, 'Game Schedule')
File "create_and_update_xlsx_sheets.py", line 33, in multiple_dfs
df.to_excel(writer, sheets, startrow=row, index=False)
NameError: name 'writer' is not defined
これらのエラーを修正するにはどうすればよいですか?私はmultiple_dfs
にそれらを再定義したくないですが、私は将来の機能でそれらを再定義する必要があります。
は、あなたがそれを使用していますあなたの関数に 'writer'を渡すことができます。あなたの関数は、アクセスしていない変数を使用する方法をどのように知っていますか? 'writer'は最初からグローバル変数ではありません。 –
@cᴏʟᴅs '' multiple_dfs(item、sheets、writer、row) 'を意味しますか?私はそのような練習を避けたいと思います。 'writer'を' create_and_update_worksheets() '関数に留まるグローバル変数として定義できますか?何を指示してるんですか? –
なぜあなたは避けなければならない何か他のものに賛成する何かを避けたいのですか? 'global'変数は悪い習慣であり、コードの匂いにつながります。また、関数が終了する直前にライターが閉じられているので、グローバル変数は実際には使用しないでください。 –