JoseM 发表于 2020-9-29 18:21:23

为什么循环进行不下去?

程序完成的功能是把一个文件夹里的所有excel表格的第三列 都copy出来 粘贴到另外一个文件夹下的唯一一个excel表格中,即新excel表格中的每一列数据(从第三列开始)分别来自源文件的第三列。

我再pycharm里编写的, 第一次编写的是处理30个excel的表格的, 达到目的。随后把代码复制一份,修改了路径,新建了一个python, 处理45个表格,i<45 但是这个新的程序只算到i=13就停止了,请大家帮我看下 这是什么原因,谢谢。

import os
import openpyxl
from openpyxl import Workbook
from openpyxl import load_workbook

import os
import openpyxl
from openpyxl import Workbook
from openpyxl import load_workbook
path = r'C:\Users\gaoqiang5\Desktop\mmW_E_Raw\CDF\M0_CDF_xlsx\Dual_Beam'
Beam_file = os.listdir(path)
CDF = load_workbook('C:\\Users\\gaoqiang5\\Desktop\\mmW_E_Raw\\CDF\\M0_CDF_calcu\\Dual_Beam\\EIRP_all_dual_beam.xlsx')
CDF_sheet = CDF['Sheet1']
sheet = CDF.active
k=3
i=0
while i< 45 & k< 46:
print(Beam_file) #一次调取源文件夹中的excel
dir_path = 'C:\\Users\\gaoqiang5\\Desktop\\mmW_E_Raw\\CDF\\M0_CDF_xlsx\\Dual_Beam\\'
dir_path = dir_path + Beam_file

print(dir_path)
Beam_Raw= load_workbook(dir_path)
sh_name = Beam_Raw.sheetnames
Beam_Raw_sheet = Beam_Raw]
sheet = Beam_Raw.active
a = sheet.max_row
a = a+1
print(a)
j = 1 #数据行
Beam_Raw_i = []

while j < a :
   Beam_Raw_i.insert(j-1, Beam_Raw_sheet.cell(j+1,3).value)
   #print(Beam_Raw_i)
   CDF_sheet.cell(j+1,k).value = Beam_Raw_i
   j=j+1

k=k+1
i=i+1
print(i)
print(k)
CDF.save('C:\\Users\\gaoqiang5\\Desktop\\mmW_E_Raw\\CDF\\M0_CDF_calcu\\Dual_Beam\\EIRP_all_dual_beam.xlsx')

lirenbing01 发表于 2020-9-29 18:21:24

本帖最后由 lirenbing01 于 2020-9-30 10:10 编辑

while i< 45 & k< 46:
把k<46删掉

你这里&是与的意思
相当于 (i<45)and(45&k)and(k<46)
当你k=16的时候 45&16=0就退出循环了
页: [1]
查看完整版本: 为什么循环进行不下去?