鱼C论坛

 找回密码
 立即注册
查看: 1719|回复: 1

[已解决]为什么循环进行不下去?

[复制链接]
发表于 2020-9-29 18:21:23 | 显示全部楼层 |阅读模式
15鱼币
程序完成的功能是把一个文件夹里的所有excel表格的第三列 都copy出来 粘贴到另外一个文件夹下的唯一一个excel表格中,即新excel表格中的每一列数据(从第三列开始)分别来自源文件的第三列。

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

  1. import os
  2. import openpyxl
  3. from openpyxl import Workbook
  4. from openpyxl import load_workbook

  5. import os
  6. import openpyxl
  7. from openpyxl import Workbook
  8. from openpyxl import load_workbook
  9. path = r'C:\Users\gaoqiang5\Desktop\mmW_E_Raw\CDF\M0_CDF_xlsx\Dual_Beam'
  10. Beam_file = os.listdir(path)
  11. CDF = load_workbook('C:\\Users\\gaoqiang5\\Desktop\\mmW_E_Raw\\CDF\\M0_CDF_calcu\\Dual_Beam\\EIRP_all_dual_beam.xlsx')
  12. CDF_sheet = CDF['Sheet1']
  13. sheet = CDF.active
  14. k=3
  15. i=0
  16. while i< 45 & k< 46:
  17. print(Beam_file[i]) #一次调取源文件夹中的excel
  18. dir_path = 'C:\\Users\\gaoqiang5\\Desktop\\mmW_E_Raw\\CDF\\M0_CDF_xlsx\\Dual_Beam\\'
  19. dir_path = dir_path + Beam_file[i]

  20. print(dir_path)
  21. Beam_Raw= load_workbook(dir_path)
  22. sh_name = Beam_Raw.sheetnames
  23. Beam_Raw_sheet = Beam_Raw[sh_name[0]]
  24. sheet = Beam_Raw.active
  25. a = sheet.max_row
  26. a = a+1
  27. print(a)
  28. j = 1 #数据行
  29. Beam_Raw_i = []

  30. while j < a :
  31.    Beam_Raw_i.insert(j-1, Beam_Raw_sheet.cell(j+1,3).value)
  32.    #print(Beam_Raw_i[j-1])
  33.    CDF_sheet.cell(j+1,k).value = Beam_Raw_i[j-1]
  34.    j=j+1

  35. k=k+1
  36. i=i+1
  37. print(i)
  38. print(k)
  39. CDF.save('C:\\Users\\gaoqiang5\\Desktop\\mmW_E_Raw\\CDF\\M0_CDF_calcu\\Dual_Beam\\EIRP_all_dual_beam.xlsx')
复制代码
最佳答案
2020-9-29 18:21:24
本帖最后由 lirenbing01 于 2020-9-30 10:10 编辑
  1. while i< 45 & k< 46:
  2. 把k<46删掉
复制代码


你这里&是与的意思
相当于 (i<45)and(45&k)and(k<46)
当你k=16的时候 45&16=0  就退出循环了

最佳答案

查看完整内容

你这里&是与的意思 相当于 (i
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-29 18:21:24 | 显示全部楼层    本楼为最佳答案   
本帖最后由 lirenbing01 于 2020-9-30 10:10 编辑
  1. while i< 45 & k< 46:
  2. 把k<46删掉
复制代码


你这里&是与的意思
相当于 (i<45)and(45&k)and(k<46)
当你k=16的时候 45&16=0  就退出循环了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 20:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表