目录
 
一、源文件介绍(stu.csv)
 
(1)文件结构及内容(stu.csv)
 
二、程序执行结果
 
(2)输出文件query.csv
 
(3)输出显示
 
三、程序源代码
 
 
一、源文件介绍(stu.csv)
 
(1)文件结构及内容(stu.csv)
 
| 学号 | 姓名 | 性别 | 年龄 | 专业 | 备注 | 
| 1122101 | 张三1 | 男 | 18 | 发电1 | 朱春强1 | 
| 1122102 | 张三2 | 女 | 19 | 发电2 | 朱春强2 | 
| 1122103 | 张三3 | 男 | 20 | 发电3 | 朱春强3 | 
| 1122104 | 张三4 | 女 | 18 | 发电4 | 朱春强4 | 
| 1122105 | 张三5 | 男 | 19 | 发电5 | 朱春强5 | 
| 1122106 | 张三6 | 女 | 20 | 发电6 | 朱春强6 | 
| 1122107 | 张三7 | 男 | 18 | 发电7 | 朱春强7 | 
| 1122108 | 张三8 | 女 | 19 | 发电8 | 朱春强8 | 
| 1122109 | 张三9 | 男 | 20 | 发电9 | 朱春强9 | 
二、程序执行结果
 
(2)输出文件query.csv
 
| 学号 | 姓名 | 年龄 | 专业 | 
| 1122102 | 张三2 | 19 | 发电2 | 
| 1122103 | 张三3 | 20 | 发电3 | 
| 1122105 | 张三5 | 19 | 发电5 | 
| 1122106 | 张三6 | 20 | 发电6 | 
| 1122108 | 张三8 | 19 | 发电8 | 
| 1122109 | 张三9 | 20 | 发电9 | 
 
(3)输出显示
 
runfile('E:/PythonStudy/test/Readcsv.py', wdir='E:/PythonStudy/test')
文件已打开,继续执行条件OK!
数据处理完毕...共处理6个记录。
 
三、程序源代码
 
# -*- coding: utf-8 -*-
"""
Created on Sun Apr  3 09:42:08 2022
@author: zhuchunqiang
"""
import os,sys
try:
    
    infile = open("stu.csv","r",encoding="gbk")#支持中文
    outfile = open("query.csv","w+",encoding="gbk");
    #infile = open("stu.csv","r",encoding="utf-8")
    #outfile = open("query.csv","w+",encoding="utf-8");
    
except FileNotFoundError as err:
    print("file not exist,exit");
    print(err)
    
    sys.exit();
    
except:
    print("Unexpected Error!");
    sys.exit();
    
else:
    print("文件已打开,继续执行条件OK!")
    
    #开始循环处理文件内容...
    iNumLine = 0 #输入文件第一行为文件头,包含了字段名称
    while True:
        try:
            line_raw = infile.readline();
            if (not line_raw):#文件结尾,退出循环
                break;
                
            line = line_raw.strip()#去除前后空格
            if(line==""):continue #忽略空行
        
            #处理数据
            fields = line.split(sep=",")
            if(iNumLine==0): #写入挑选的字段名称
                lineInfo = fields[0]+","+fields[1]+","+fields[3]+","+fields[4]+"\n"#os.linesep
                outfile.write(lineInfo)
                iNumLine += 1;
                continue;
                
            age = int(fields[3])#年龄
            if(age>18 and age<=20):#挑选条件
                lineInfo = fields[0]+","+fields[1]+","+fields[3]+","+fields[4]+"\n"#os.linesep
                outfile.write(lineInfo)
                iNumLine += 1;
            else:
                continue
            
        except ValueError as err:
            print("\nValueError is occured:",err,end="\n")
            
        except:
            print("Unexcepted error:")
            
    #end of while loop...
    
finally:
    if('infile' in dir()):
        infile.close()
        
    if('outfile' in dir()):
        outfile.close()
        
print("\n数据处理完毕...共处理%d个记录。" %(iNumLine-1)) #有一行文件头