【Python】为什么不能直接比较数字 if student_id == 667788
实现一个批量更改文件名的一个需求的时候,发现获取文件名的这个数字之后,直接拿这个数字去便利查找excel中的对应的行,结果返回是 none
为什么呢?
原因就是比较的类型不一致。从这个文件夹中提取的这个数字并不是数字类型,Python会默认为字符类型,所以在比较的时候需要将其转化为数字,或者将查找的这个excel的值转化为字符型型
附上问题代码:
import pandas as pddef find_course_name_by_student_id(excel_file_path, student_id):print(f"-- finding the code {student_id} .....")df = pd.read_excel(excel_file_path)for index, row in df.iterrows():if str(row['课程代码']) == str(student_id):# print(row['课程名称'])return row['课程名称']# if row['课程代码'] == student_id:# print("-- "+row['课程名称'])# return row['课程名称']return None
#
excel_file_path = 'E:\\12-大纲收集\查询代码课程名字.xlsx'import os
import refolder_path = 'E:\\12-大纲收集\测试文件夹' # 替换为你的文件夹路径
# 指定要添加的字符
fail_run = []
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):# 只处理 PDF 文件if filename.endswith('.pdf'):# 获取文件名中的数字部分hyphen_index = filename.find('-')if hyphen_index != -1:# 提取“-”前的数字部分number_part = filename[:hyphen_index]print(number_part)additional_string = find_course_name_by_student_id(excel_file_path, number_part)print(additional_string)new_filename = f"{number_part}-{additional_string}.pdf"old_file_path = os.path.join(folder_path, filename)new_file_path = os.path.join(folder_path, new_filename)# os.rename(old_file_path, new_file_path)print(f"Renamed: {filename} -> {new_filename}")else:fail_run.append(filename)print("\n\n"+fail_run)