python - Excel - 在循環中,python創建變數

93 4

我試圖在循環中創建變數,然後在循環迭代中給它們賦值,這是我的代碼:


import openpyxl



months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']



for month in months:


 filepath = 'C:codesFurnace_time_log2019' + month + '_2019.xlsx'


 workbook_name = month+'_wb'


 workbook_name = openpyxl.load_workbook(filepath)


 sheet_name = month+'_sheet'


 sheet_name = workbook_name.get_sheet_by_name('Sheet1')



我想要的是12個openpyxl工作表對象,名為「January_sheet,February_sheet ..

這是我的錯誤代碼的邏輯:


head_wb = openpyxl.load_workbook('C:codesFurnace_time_loghead.xlsx')


head_sheet = head_wb.get_sheet_by_name('Sheet 1')



时间: 原作者:

102 3


import openpyxl



months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']



sheets = {}



for month in months:


 filepath = 'C:codesFurnace_time_log2019' + month + '_2019.xlsx'


 workbook = openpyxl.load_workbook(filepath)


 sheet_name = month + '_sheet'


 sheet = workbook_name.get_sheet_by_name(sheet_name)


 sheets[month] = sheet



這假設你的工作表名為xxxx_month (例如,January_month,區分大小寫,而不是最初使用的Sheet1 ,完成這個操作后,將有一個字典映射月份名稱到表對象。

原作者:
102 4

我可以看到你的代碼有幾個問題:

  • 文件名中的轉義序列不正確,
  • 重新分配變數,
  • 你試圖創建兩個不同的動態變數集: 工作簿和工作表,而不建立它們之間的關係,

在下面的代碼中,第一行存儲了變數'sheet_name',第二個變數將新值存儲到相同變數中,從而更改它值:


sheet_name = month+'_sheet'


sheet_name = workbook_name.get_sheet_by_name('Sheet1') 



你要做的是動態創建變數名稱和值,


months = ['January', 'February', 'March','April', 'May', 'June', 'July', 


 'August', 'September', 'October', 'November', 'December']


wb_format = r'C:codesFurnace_time_log2019{}_2019.xlsx'


workbooks = dict((month, wb_format.format(month)) for month in months)



如果你確實想創建這些變數,請查找locals()globals(),但是要小心。

原作者:
...