在数据分析需求中常常涉及数据的输入输出过程,CSV是非常好用的一种文本格式,十分简便,本文中对csv文件的读取和写入已经各种模式进行简要介绍:
利用with open()进行文件的读取可以避免忘记close的情况,这种方式在使用完文件后会自动进行关闭。

读取csv文件(使用csv库)

import csv

def read_csv():
    path = "aa.csv"
    with open(path,"w") as f:
        csv_read = csv.reader(f)
        for line in csv_read:
            print line

读取csv文件(直接读取)

利用 csv.reader 可以读 csv 文件,然后返回一个可迭代的对象 csv_read,我们可以直接从 csv_read 中取数据

def Fun_readCSVfile(_filename):
    List_result  = []
    with open(_filename,'r') as obj_f:
        str_title = obj_f.readline().strip()
        str_data = obj_f.readline().strip()
        while (str_data != '' and str_data != None):
            List_result.append(str_data)
            str_data = obj_f.readline().strip()#str.strip()用于去除后面的‘\n’ 
    print(_filename+'读取结束')
    return str_title,List_result

写入csv文件

利用 csv.writer 可以写入文件,如果文件不存在,会自动创建,需要注意的是,文件后缀一定要是 .csv,这样才会创建 csv 文件

import csv

def create_csv():
    path = "aa.csv"
    with open(path,'w') as f:
        csv_write = csv.writer(f)
        # 将csv文件的头信息写进了文件
        csv_head = ["good","bad"]
        csv_write.writerow(csv_head)
        tmp = []
        tmp.append("side")
        csv_write.writerow(tmp)

追加写入到csv文件

a+是追加写入,光标定位至末位,不覆盖;w+也是追加写入,但是光标在首位,会删除原有数据。

#输出CSV
def Fun_outputCSV(_filename,_list_r):
    with open(_filename,'a+') as obj_f:
        for str_re in _list_r:
            obj_f.write(str_re+'\n')

读写模式:

模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐