Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python-在循环中创建变量,然后赋值_Python_Excel_Loops_Variables_Openpyxl - Fatal编程技术网

python-在循环中创建变量,然后赋值

python-在循环中创建变量,然后赋值,python,excel,loops,variables,openpyxl,Python,Excel,Loops,Variables,Openpyxl,我试图在一个循环中创建变量,然后在同一个循环迭代中为它们赋值。我的代码失败了,我知道原因,但无法找到修复方法。我在所有导入包的当前版本中使用Python3.6。这是我的密码: import openpyxl months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] for month in

我试图在一个循环中创建变量,然后在同一个循环迭代中为它们赋值。我的代码失败了,我知道原因,但无法找到修复方法。我在所有导入包的当前版本中使用Python3.6。这是我的密码:

import openpyxl

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

for month in months:
    filepath = 'C:\codes\Furnace_time_log\\2019\\' + 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工作表对象

在我前面的代码中,我有下面的示例,它完全实现了它的功能。这就是我错误代码的逻辑依据:

head_wb = openpyxl.load_workbook('C:\codes\Furnace_time_log\head.xlsx')
head_sheet = head_wb.get_sheet_by_name('Sheet 1')
我正在使用一个Excel文件,其中每一行都包含一个日期和许多其他有用的信息。如果x行的日期是1月,我需要将相邻数据放在一个单独的XLSX文档(“Janur_2019.XLSX”)中,我可以通过Janur_sheet对象进行编辑


关于如何做到这一点,有什么建议吗?此外,我不关心性能。此代码只需在完整数据集上运行一次。我意识到可能有比同时打开12个openpyxl工作簿和工作表更有效的方法。话虽如此,我们欢迎任何更好的方法来实现这一点。

我根本不知道您的界面,但这就是我收集到的:

导入openpyxl
月份=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’]
工作表={}
月份中的月份:
文件路径='C:\\codes\\FURNER\U time\U log\\2019\\'+MOUNT+'\U 2019.xlsx'
工作簿=openpyxl.load\u工作簿(文件路径)
工作表名称=月份+“\u工作表”
工作表=工作簿名称。按工作表名称获取工作表(工作表名称)
工作表[月份]=工作表
这是假设您的工作表命名为
xxxx\u月
(例如
一月\u月
,区分大小写),而不是您最初使用的
Sheet1
。完成此操作后,将有一个字典将月份名称映射到工作表对象


如果我所做的事情没有意义,请告诉我,我将进行编辑。

我可以看到您的代码存在一些问题:

  • 文件名中的转义序列不正确
  • 重新分配变量
  • 您试图创建两组不同的动态变量:工作簿和工作表,而不建立它们之间的关系
  • 在下面的代码中,第一行将值存储到变量“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:\codes\Furnace_time_log\2019\{}_2019.xlsx'
    workbooks = dict((month, wb_format.format(month)) for month in months)
    

    如果确实要创建这些变量,请查找和,但一定要小心。

    通常,显示错误消息和代码失败的位置会有帮助。有关许多选项,如字典、命名元组等,请参阅此问题:1。只有一个Excel文件具有
    工作表1
    。2.您希望根据
    工作表1
    列中的日期创建多个文件。请确认。另外,发布标题和前5行数据。谢谢,这正是我所需要的!