摘要:该Python脚本用于检查CSV文件的格式规范,包括验证标题行是否包含"文件名"、"件数"、"关键字"三个必需字段,以及每行数据是否包含3个以逗号分隔的字段。脚本会检测空行、字段数量不符等错误,并输出详细的错误报告。使用方法为命令行执行python脚本名+文件名,若文件格式正确将返回确认信息,否则列出所有格式错误。
import sys
import csv
def check_file_format(file_path):
required_headers = ['文件名', '件数', '关键字'] # 指定的三个标题头
errors = []
line_num = 0
try:
with open(file_path, 'r', encoding='utf-8-sig') as file:
reader = csv.reader(file)
# 检查标题行
try:
headers = next(reader)
line_num += 1
# 检查标题行是否包含所需的三个标题头
if len(headers) != 3:
errors.append(f"标题行格式错误:应该包含3个字段,但实际有{len(headers)}个")
else:
for i, required in enumerate(required_headers):
if headers[i].strip() != required:
errors.append(f"标题行第{i + 1}列错误:应为'{required}',但实际为'{headers[i].strip()}'")
except StopIteration:
errors.append("文件为空,不包含任何内容")
return errors
# 检查数据行
for row in reader:
line_num += 1
# 检查是否有空行
if not row:
errors.append(f"第{line_num}行:空行不允许存在")
continue
# 检查每行是否有3个字段
if len(row) != 3:
errors.append(f"第{line_num}行:应该包含3个字段,但实际有{len(row)}个")
# 检查文件是否至少有一行数据(除标题行外)
if line_num == 1:
errors.append("文件中没有数据行,只有标题行")
except FileNotFoundError:
errors.append(f"错误:文件 '{file_path}' 不存在")
except Exception as e:
errors.append(f"发生未知错误:{str(e)}")
return errors
if __name__ == "__main__":
# 检查命令行参数
if len(sys.argv) != 2:
print("用法: python check_txt_file.py <文件名>")
sys.exit(1)
file_path = sys.argv[1]
print(f"正在检查文件 '{file_path}' 的格式...")
errors = check_file_format(file_path)
if not errors:
print("文件格式正确。")
print("所有行都包含3个以逗号分隔的字段。")
sys.exit(0)
else:
print(f"文件存在 {len(errors)} 个格式错误:")
for error in errors:
print(f"- {error}")
sys.exit(1)