12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import os
- import pandas as pd
- import warnings
- from tqdm import tqdm # 用于显示进度条
- # 忽略openpyxl的默认样式警告
- warnings.filterwarnings("ignore", message="Workbook contains no default style, apply openpyxl's default")
- def check_xlsx_files(path):
- """
- 遍历指定路径下的所有 .xlsx 文件,并检查 '交易金额' 列是否为数字类型。
-
- Args:
- path (str): 要遍历的目录路径
- """
- # 获取目录下所有 .xlsx 文件
- xlsx_files = [f for f in os.listdir(path) if f.endswith('.xlsx')]
-
- # 如果没有找到 .xlsx 文件,直接返回
- if not xlsx_files:
- print("未找到任何 .xlsx 文件")
- return
-
- # 初始化进度条
- pbar = tqdm(total=len(xlsx_files), desc="处理文件", unit="file")
-
- problem_files = [] # 记录有问题的文件
-
- for file in xlsx_files:
- file_path = os.path.join(path, file)
-
- try:
- # 尝试读取 Excel 文件
- df = pd.read_excel(file_path)
-
- # 检查 '交易金额' 列是否存在
- if '交易金额' not in df.columns:
- print(f"警告:文件 {file} 中没有 '交易金额' 列")
- pbar.update(1)
- continue
-
- # 检查 '交易金额' 列是否为数字类型
- if not pd.api.types.is_numeric_dtype(df['交易金额']):
- problem_files.append(file)
- print(f"问题文件:{file} 中的 '交易金额' 列不是数字类型")
-
- pbar.update(1)
-
- except Exception as e:
- # 如果读取文件失败,记录错误信息
- print(f"错误:无法处理文件 {file}")
- print(f"原因:{str(e)}")
- pbar.update(1)
-
- pbar.close() # 关闭进度条
-
- if problem_files:
- print("\n以下文件存在问题:")
- for file in problem_files:
- print(file)
- else:
- print("\n所有文件的 '交易金额' 列都是数字类型")
- # 如果直接运行脚本,可以通过命令行传入路径
- if __name__ == "__main__":
- import sys
- if len(sys.argv) < 2:
- print("请提供要检查的目录路径!")
- print(f"用法:python {sys.argv[0]} /path/to/directory")
- sys.exit(1)
-
- path = sys.argv[1]
- check_xlsx_files(path)
|