• Python读写文件代码


    1.读取csv文件

    with open(文件路径,'r',encoding='utf-8') as file:
        reader = csv.reader(file)
        for line in reader:  #循环后,line是每一行的文件,如果需要行文件的列,则用索引line[i]选择
            a[line[0]]=line[1]
            b[line[0]]=line[3]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.读并写文件csv文件(追加文件)

    当需要将文件test3文件的部分内容写入到output文件的时候:
    思路1:将数据少的文件写成字典,然后打开并写入到output中‘
    思路2:同时打开两个文件,然后再写入新的文件,但是这种方法需要不断的打开某一个文件进行遍历,因为使用with open打开遍历一次以后,不会初始化,因此需要不断地进行打开。该文件很浪费时间。

    下述代码为思路1的代码:

    # 附件3数据处理 
    import csv
    
    path3 = 'C:/Users/Administrator/Desktop/C0909/data/test3.csv'
    path4 = 'C:/Users/Administrator/Desktop/C0909/output.csv'
    
    c = {}
    
    with open(path3,'r',encoding='utf-8') as file:
        readers3 = csv.reader(file)
        for i in readers3:
            k = i[0]+ ',' + i[1]
            c[k] = i[2]
    # print(c)
    
    with open(path4,'r',encoding='utf-8') as csvfile:
        reader4 = csv.reader(csvfile)
        headers2 = next(reader4)      
        # 添加新的一列
        headers2.append('批发价格')
        with open('./AllData1.csv', 'w', newline='',encoding='utf-8') as outfile1:
            # 写入表头
            writer_price = csv.writer(outfile1)
            writer_price.writerow(headers2)
            
            for r in reader4:
                for c_k,c_v in c.items():
                    if r[0] + ',' + r[2] == c_k:
                        r.append(c_v)
                        # 写入新的一行数据
                        writer_price.writerow(r)
                        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    下述代码是思路2的代码:

    #附件3整合output文件(到附件1+附件2的整合文件) = AllData文件
    path3 = 'C:/Users/86166/Desktop/C0908/data/附件3.csv'
    path4 = 'C:/Users/86166/Desktop/C0908/output.csv'
    
    
                        
    with open(path4,'r',encoding='utf-8') as csvfile:
        reader4 = csv.reader(csvfile)
        headers2 = next(reader4)
        print(headers2)     
        # 添加新的一列
        headers2.append('批发价格')
        
        with open('./AllData.csv', 'w', newline='') as outfile1:
            # 写入表头
            writer_price = csv.writer(outfile1)
            writer_price.writerow(headers2)
                
            for row4 in reader4:
                # print(row4)
                with open(path3,'r',encoding='utf-8') as csv_file:
                    reader3 = csv.reader(csv_file)
                    headers3 = next(reader3)         
                    print(headers3)
                    sum = 0   
                    for row3 in reader3:
                        # print(row3)
                        # 附件3中的数据说明:row3[0] 日期,row3[1] 单品编号,row[2] 批发价格
                        # output文件中的数据说明:row4[0] 日期, row4[2] 单品编号
    
                        if row4[0] + ',' + row4[2] != row3[0] + ',' + row3[1]:
                          
                            continue
                        else:
                            # 在每一行数据中添加新的一列的值
                            row4.append(row3[2])
    
                            # 写入新的一行数据
                            writer_price.writerow(row4)                 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    3.读取xlsx文件[使用pandas]

    3.2基本操作

    import os
    import pandas as pd
    import matplotlib.pyplot as plt
    
    data = pd.read_excel('../data1/sale.xlsx')
    data.head() #查看前5行
    data.tail() #查看倒数5行
    data.shape #查看维度信息
    data.dtypes #查看每一列的数据格式
    
    # 查看列数据信息
    data['日销售额']  #或则data.列名
    #查看单行或者多行数据:
    data.iloc[4] #提取第4行
    data.iloc[:,0:4] #提取所有行,04列
    data['日销售额'].mean()  #求列平均值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3.2 逐行读取

    3.2.1逐行读取指定列的操作

    #逐行读数据
    import pandas as pd
    data = pd.read_excel('../data1/compare.xlsx')
    """先获取二维列表格式的值,然后遍历二维列表"""
    for row in data.values:	# 遍历所有行
        print(row) #一行全部输出
        print(row[1]) #输出行的第1列数据
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.2.2逐行读取指定列的操作

    import pandas as pd
    #提取每一行的数据的指定列数据
    data = pd.read_excel('../data1/compare.xlsx')
    for i in range(data.shape[0]):    
        print(data.iloc[i,1])  #选取每一行(i)的第1列数据
        求第一列+第三列的和 = data.iloc[i,1] + data.iloc[i,3]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.3 依次循环读取每一个数据[共3种方法]

    #逐行读数据[3种方法]
    import pandas as pd
    data = pd.read_excel('../data1/compare.xlsx')
    """先获取二维列表格式的值,然后遍历二维列表"""
    for row in data.values:	# 遍历所有行
        for value in row:	# 遍历行的每列值
            print(value,end=",")
        print()
    
    """根据行索引和列名遍历"""
    for row_index in data.index:
        for column_name in data.columns:
            print(data.loc[row_index, column_name],end=",")
        print()
    """根据行列的数字索引遍历"""
    for i in range(data.shape[0]):
        for j in range(data.shape[1]):
            print(data.iloc[i, j],end=",")
        print()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    在Spring Boot中使用Thymeleaf开发Web页面
    刚学python不知道该如何学习?初学者必看学习路线图!
    ATF启动(五):服务注册
    前端css样式小知识点(大杂烩)
    MongoDB数据库的安装和使用
    Allegro单独更改覆铜焊盘的连接方式
    FANUC机器人零点复归的报警原因分析和零点标定相关步骤
    dhclient.conf配置参数timeout和retry的含义
    Http提高性能的两种方案:缓存、懒加载
    Linux每日智囊
  • 原文地址:https://blog.csdn.net/qq_38633279/article/details/132805528