在python里面,读取或写入csv文件时,使用 csv这个库。

读文件

读取csv文件,用的是csv.reader()这个方法。返回结果是一个_csv.reader的对象, 可以把这个对象转换为列表,当做列表来处理

import csv

with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    print(type(reader))
    
for row in reader:
	print(row)
import csv 
import os
from itertools import islice

# 写文件
def wt_csv(filename, data, header=None):
    """
    :param filename:
    :param data:
    :param header:
    :return:
    """
    filename = os.path.join(res_dir, filename)
    if os.path.isfile(filename):
        with open(filename, 'a', newline='')as f:
            csv_write = csv.writer(f, dialect='excel')
            for row in data:
                # print(row)
                csv_write.writerow(row)
    else:
        with open(filename, 'w', newline='')as f:
            csv_write = csv.writer(f, dialect='excel')
            csv_write.writerow(header)
            for row in data:
                # print(row)
                csv_write.writerow(row)

# 读文件
def read_csv(filename, field):
    data = []
    filename = os.path.join(res_dir, filename)
    if os.path.isfile(filename):
        with open(filename, 'r', buffering=True) as f:
            reader = csv.reader(f)
            # 忽略首行
            for row in islice(reader, 1, None):
                length = len(row)
                for i in range(length):
                    if field:
                        if i in field:
                            d = list(row[i])
                            data.extend(d)
                        else:
                            pass
                    else:
                        d = list(row[i])
                        data.extend(d)
    return data

# 统计字符所占文件大小
def utf8Length(sequence):
    count = 0
    i = 0
    if sequence:
        lens = len(sequence)
        print(lens)
        while i < lens:
            ch = ord(sequence[i])
            if ch <= 0x7F:
                count += 1
            elif ch <= 0x7FF:
                count += 2
            else:
                count += 3
            i += 1
    print(count)
    return count