zoukankan      html  css  js  c++  java
  • Python之文件读写(csv文件,CSV库,Pandas库)

    前言

    1. 一.Python文件读取
    2. 二、读取CSV文件

    一.Python文件读取


    1. open函数是内置函数之with操作

    - 关于路径设置的问题斜杠设置成D:\文件夹\文件或是D:/文件夹/文件
    f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    
    • file: 必需,文件路径(相对或者绝对路径)。
    • mode: 可选,文件打开模式
    • buffering: 设置缓冲
    • encoding: 一般使用utf8
    • errors: 报错级别
    • newline: 区分换行符
    • closefd: 传入的file参数类型
    • opener:

    打开文件之后就要开始操作了,一个读取了,但是要是没有打开文件就会报错,或则在读取的过程中报错就不会关闭文件了,所以为了无论报错与否,在使用完文件后就要关闭文件。如下:

    try:
        f = open('/path/to/file', 'r')
        print(f.read())
    finally:
        if f:
            f.close()
    

    这样写太过于麻烦,Python中直接使用with来直接自动来帮我们调用close()

    with open('/path/to/file', 'r') as f:
        print(f.read())
    

    上面的写法和try...finally效果一样。

    2. 读文件

    f.read()一次性读入所有数据,保险起见可以规定每次读取的数据大小,f.read(size)进行反复调用读取。

    f.readline(),每次读取一行,f.readlines()一次读取多行另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。

    for line in f.readlines():
        print(line.strip()) # 把末尾的'
    '删掉
    

    3. 写文件

    和写文件一样,首先使用open函数直接打开但是传入标识符mode='w'即写入模式。
    可以调用f.write()写入内容,写完之后务必使用f.close()关闭文件。

    方法一:
    f = open('/Users/michael/test.txt', 'w')
    f.write('Hello, world!')
    f.close()
    方法二:
    with open('/Users/michael/test.txt', 'w') as f:
        f.write('Hello, world!')
    
    • 要写入或则是读取特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码。

    4. 多个文件的读写操作

    方法一:
    with open('/home/xbwang/Desktop/output_measures.txt','r') as f:
        with open('/home/xbwang/Desktop/output_measures2.txt','r') as f1:
            with open('/home/xbwang/Desktop/output_output_bk.txt','r') as f2:
           ........
           ........
           ........
    方法二:
    with open('/home/xbwang/Desktop/output_measures.txt','r') as f:
    ........
    with open('/home/xbwang/Desktop/output_measures2.txt','r') as f1:
    ........
    with open('/home/xbwang/Desktop/output_output_bk.txt','r') as f2:
    ........
    

    二、读取CSV文件


    1. 使用csv库进行读写操作

    1.获取csv文件的文件表头

    #方式一
    import csv
    with open("D:\test.csv") as f:
        reader = csv.reader(f)
        rows=[row for row in  reader]
        print(rows[0])
    
    
    
    #方式二
    import csv
    with open("D:\test.csv") as f:
        #1.创建阅读器对象
        reader = csv.reader(f)
        #2.读取文件第一行数据
        head_row=next(reader)
        print(head_row)
    

    2.读取文件的某一列数据

    说明使用csv.reader()返回一个reader对象,它将迭代给定csvfile中的行。
    csvfile可以是任何支持迭代器协议的对象,
    并在每次__next__()调用其方法时返回一个字符串- 文件对象和列表对象都是合适的。
    import csv
    with open("D:\test.csv") as f:
        reader = csv.reader(f)
        column=[row[0] for row in  reader]
        print(column)
    

    3.写入csv文件

    import csv
    with open("D:\test.csv",'a') as f:
         row=['曹操','23','学生','黑龙江','5000']
         write=csv.writer(f)
         write.writerow(row)
         print("写入完毕!")
    
    • writerow()方法是一行一行写入,
    • writerows方法是一次写入多行

    2. 使用pandas库进行csv文件操作

    1.读取csv的全部文件

    import pandas as pd
    path= 'D:\test.csv'
    with open(path) as file:
        data=pd.read_csv(file)
        print(data)
    
    

    2.读取文件前几行数据

    import pandas as pd
    path= 'D:\test.csv'
    with open(path)as file:
        data=pd.read_csv(file)
        #读取前2行数据
        head_datas = data.head(0)
        head_datas = data.head(1)
        print(head_datas)
    说明head函数就是用来读取哪一行的
    

    3.读取文件哪一行的全部内容

    import pandas as pd
    path= 'D:\test.csv'
    with open(path)as file:
        data=pd.read_csv(file)
        #读取第一行所有数据
        print(data.ix[0,])
    

    4.读取文件的哪几行数据

    import pandas as pd
    path= 'D:\test.csv'
    with open(path)as file:
        data=pd.read_csv(file)
        #读取第一行、第二行、第四行的所有数据
        print(data.ix[[0,1,3],:])
    

    5.读取所有行和列数据

    import pandas as pd
    path= 'D:\test.csv'
    with open(path)as file:
        data=pd.read_csv(file)
        #读取所有行和列数据
        print(data.ix[:,:])
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    机器视觉资料整理
    《用TCP/IP进行网络互连》读书笔记
    Win Form不能响应键盘事件
    C语言 字符串前加L的意义 如:L“A”
    UniCode 下 CString 转 char* 的方法(转)
    BATCH
    HALCON不支持的设备中,获取图像
    关于FragmentManager动态管理Fragment时Fragment生命周期的探究
    关于如何惟一地标识一台Android设备的综合性讨论
    如何使ActionBar不那么单调
  • 原文地址:https://www.cnblogs.com/tsruixi/p/11395160.html
Copyright © 2011-2022 走看看