LK-Hulk 发表于 2021-12-15 18:49

Python if判断语句直接跳过

各位大佬好,
不多废话,直入主题。
代码大意是把文件字符拆开,重组后,赋值让python判断,用xlwing直接写入,但运行后发现,if语句都直接跳过,文件根本没写入。提前感谢看过大佬们。
附上源代码,可能比较乱。
import xlwings as xwimport time
import os
import xlwt
import xlrd

file_dir='C:/Users/ASUS/Desktop/处理好的文件'
for root,dirs,files in os.walk(file_dir):
    for a in range(0,14):
      os.chdir(r'C:/Users/ASUS/Desktop/处理好的文件')
      print('---------------分隔符')
      print(a)
      print(files)
      app = xw.App(visible=False, add_book=False)
      workbook=app.books.open(files)
      sheets=workbook.sheets[0]
      last_cell=sheets.used_range.last_cell
      nrows=sheets.used_range.last_cell.row
      ncols = sheets.used_range.last_cell.column
      filesname=files
      dir0=1],filesname[2]]
      dir1=4],filesname[5],filesname[6],filesname[7],filesname[8]]
      nation=''.join(dir0)
      date=''.join(dir1)
      print(nation)
      print(date)
      print(nrows)
      print(ncols)
      if date==11.15:
            for i in range(0,nrows):
                date_value=sheets.range('i,0').value=='2021/11/15'
      elif date==11.16:
            for i in range(nrows):
                date_value=sheets.range('i,0').value=='2021/11/16'
      elif date==11.17:
            for i in range(nrows):
                date_value=sheets.range('i,0').value=='2021/11/17'
      elif date==11.18:
            for i in range(nrows):
                date_value=sheets.range('i,0').value=='2021/11/18'
      elif date==11.19:
            for i in range(nrows):
                date_value=sheets.range('i,0').value=='2021/11/19'
      elif date==11.20:
            for i in range(nrows):
                date_value=sheets.range('i,0').value=='2021/11/20'
      elif date==11.21:
            for i in range(nrows):
                date_value=sheets.range('i,0').value=='2021/11/21'
      print('日期写入完成')
      if nation=='UK':
            for i in range(nrows):
                nation_value=sheets,1].value=='Amazon.co.uk'
      elif nation=='DE':
            for i in range(nrows):
                  nation_value = sheets, 1].value == 'Amazon.de'
      elif nation=='FR':
            for i in range(nrows):
                  nation_value = sheets, 1].value == 'Amazon.fr'
      elif nation=='ES':
            for i in range(nrows):
                  nation_value = sheets, 1].value == 'Amazon.es'
      elif nation == 'IT':
            for i in range(nrows):
                  nation_value = sheets, 1].value == 'Amazon.it'
      print('站点写入完成')
      # for i in range(1,nrows):
      #
      #   New_value=sheets.value=['']
      workbook.close()
      app.quit()
      time_start = time.time()
      time_end = time.time()
      print('所用时间:',time_end-time_start,"秒")
      time.sleep(0.1)

ryosga 发表于 2021-12-15 18:55

date 应该是字符串类型吧, 相等判断应该是
if date == '11.15':

fairesense 发表于 2021-12-15 18:58

date=''.join(dir1) 连接成字符串不可能等于数字

zhmyi000 发表于 2021-12-15 19:01

你看看date的数据类型是不是float
建议用字符串拼成日期,而不是if elif嵌套

三滑稽甲苯 发表于 2021-12-15 20:25

1. float和str肯定不相等啊
2. 这么多if,可以改下:date_value = f'2021/{date[:2]}/{date}'

LK-Hulk 发表于 2021-12-15 20:54

三滑稽甲苯 发表于 2021-12-15 20:25
1. float和str肯定不相等啊
2. 这么多if,可以改下:date_value = f'2021/{date[:2]}/{date}'

Emm,大哥对不起,小白不是很懂第二点,因为刚入门,datevalue会继续学习。先谢谢。
关于第一点,那我可否加一个把字符串str类型转换为float在进行if判断?

LK-Hulk 发表于 2021-12-15 20:56

zhmyi000 发表于 2021-12-15 19:01
你看看date的数据类型是不是float
建议用字符串拼成日期,而不是if elif嵌套

Emm 大佬你好,那我可否加一个把字符串str类型转换为float在进行if判断?
If elif对小白来说相对友好,所以就套娃使用了。

aonima 发表于 2021-12-15 21:01

数据类型不相同

Lich 发表于 2021-12-15 21:35

给你个比较重要的方法type()

冥界3大法王 发表于 2021-12-16 06:41

一步一个调试输出变量,不能懒。
页: [1] 2
查看完整版本: Python if判断语句直接跳过