文件处理
有一个文档里面是一个班级的学生姓名,还有一个文件夹里面有很多个文件以姓名命名,文件里面是学生的个人信息(班级年龄成绩等),现在想做一个表格,第一列为姓名,第二列为该学生的班级,应该怎么写 柑橘栀子花~ 发表于 2025-4-30 19:24报错了
import os
filename = input('储存学生姓名的文件名: [类似 aaa.txt] ')
with open(filename, encoding='utf-8') as f:
names = f.read().splitlines()
dirpath = input('储存学生信息的文件夹路径: [类似 tmp/bbb] ')
data = []
for name in names:
with open(os.path.join(dirpath, name + '.txt'), encoding='utf-8') as f:
data.append((name, f.readlines().strip()))
outpath = input('输出路径: [类似 ccc.txt] ')
with open(outpath, 'w', encoding='utf-8') as f:
f.write('姓名,班级\n')
for name, Class in data:
f.write(f'{name},{Class}\n')
若干错误已改正 感谢指出 解决方案
推荐使用Python脚本实现,以下是具体步骤和代码:
import os
import csv
# 配置路径(根据实际情况修改)
name_file = "names.txt" # 学生名单文件路径
data_dir = "student_files" # 学生信息文件夹路径
output_file = "result.csv" # 输出表格路径
# 读取学生名单
with open(name_file, "r", encoding="utf-8") as f:
students =
# 创建结果表格
with open(output_file, "w", newline="", encoding="utf-8") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["姓名", "班级"])# 写入表头
for name in students:
file_path = os.path.join(data_dir, f"{name}.txt")
class_info = "未找到"
try:
with open(file_path, "r", encoding="utf-8") as f:
# 查找包含"班级"字段的行(根据实际格式调整)
for line in f:
if "班级:" in line:# 假设格式为"班级:xxx"
class_info = line.split(":").strip()
break
except FileNotFoundError:
class_info = "文件不存在"
writer.writerow()
print(f"表格已生成:{output_file}")
使用说明
1. 将学生姓名按行保存在 names.txt
2. 确保学生信息文件存放在 student_files 文件夹
3. 每个学生信息文件命名格式为 姓名.txt
4. 学生信息文件中需要包含 班级:班级名称 格式的行
[*]如果学生信息文件使用其他编码(如GBK),修改脚本中的 encoding="utf-8"
[*]如果班级信息字段格式不同(如"class:xxx"),修改第23行的匹配条件
[*]最终生成的 result.csv 可用Excel直接打开
如果遇到找不到文件或匹配不到班级信息的情况,表格中会标注 文件不存在 或 未找到,请注意检查对应文件。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 请详细说明文档和表格里的内容,最好能附上图片。
或者说明以什么格式储存,不一定真实姓名 FishC 发表于 2025-4-30 15:20
解决方案
推荐使用Python脚本实现,以下是具体步骤和代码:
如果没有写着班级字段的行呢,只知道每个文件的第3行就是班级,需要读取每个文件第3行的数据 柑橘栀子花~ 发表于 2025-4-30 15:29
如果没有写着班级字段的行呢,只知道每个文件的第3行就是班级,需要读取每个文件第3行的数据
有一个文档里面是一个班级的学生姓名
这个文档是怎么储存的?Word吗?一行一个姓名还是怎样?有没有多余的字符?
还有一个文件夹里面有很多个文件以姓名命名,文件里面是学生的个人信息(班级年龄成绩等)
文件夹名?什么类型的文件?文件里面是怎么储存这些信息的?
请清楚地说明您的需求,我来为您解决这个问题。 player-none 发表于 2025-4-30 15:25
请详细说明文档和表格里的内容,最好能附上图片。
或者说明以什么格式储存,不一定真实姓名
回复发不了图片,请看下最新的帖子 player-none 发表于 2025-4-30 15:30
这个文档是怎么储存的?Word吗?一行一个姓名还是怎样?有没有多余的字符?
清单文件是txt格式,文件夹里的我也不确定是什么格式 柑橘栀子花~ 发表于 2025-4-30 15:48
回复发不了图片,请看下最新的帖子
回复其实是可以发的,点那边的“高级模式”就行
文件夹里面的文件我默认是 txt 格式了,稍等我下,我写代码去 player-none 发表于 2025-4-30 15:51
回复其实是可以发的,点那边的“高级模式”就行
可以当作txt格式,文件是可以用记事本打开的,感谢 柑橘栀子花~ 发表于 2025-4-30 15:54
可以当作txt格式,文件是可以用记事本打开的,感谢
import os
filename = input('储存学生姓名的文件名: [类似 aaa.txt] ')
with open(filename, encoding='utf-8') as f:
names = f.read().splitlines()
dirpath = input('储存学生信息的文件夹路径: [类似 tmp/bbb] ')
data = []
for name in names:
with open(os.path.join(dirpath, name + '.txt'), encoding='utf-8') as f:
data.append((name, f.readlines().strip()))
outpath = input('CSV 路径: [类似 ccc.csv] ')
with open(output, 'w', encoding='utf-8') as f:
f.write('姓名,班级')
for name, Class in data:
f.write(f'{name},{Class}')
要Excel的话用Excel手动转:
player-none 发表于 2025-4-30 16:00
要Excel的话用Excel手动转:
报错了 player-none 发表于 2025-4-30 16:00
要Excel的话用Excel手动转:
是否可以改为输出格式也是txt
player-none 发表于 2025-4-30 15:18
若干错误已改正 感谢指出
如果读取的文件没有后缀名的,应该怎么读取呢 柑橘栀子花~ 发表于 2025-4-30 20:27
如果读取的文件没有后缀名的,应该怎么读取呢
with open(os.path.join(dirpath, name + '.txt'), encoding='utf-8') as f:
这一行改成(记得保留缩进,我懒得打了)
with open(os.path.join(dirpath, name), encoding='utf-8') as f: player-none 发表于 2025-4-30 20:28
with open(os.path.join(dirpath, name + '.txt'), encoding='utf-8') as f:
这一行改成(记得保留缩进 ...
谢谢! player-none 发表于 2025-4-30 20:28
with open(os.path.join(dirpath, name + '.txt'), encoding='utf-8') as f:
这一行改成(记得保留缩进 ...
发现一个BUG,只要文件有十几个以上就会报错FileNotFoundError: No such file or directory: 'ccc\\'
为什么呢 柑橘栀子花~ 发表于 2025-5-13 15:46
发现一个BUG,只要文件有十几个以上就会报错FileNotFoundError: No such file or directory: ' ...
这是找不到 ccc 目录了,跟文件数量无关
页:
[1]