python学习总结(二)csv newline uuid

1 csv 文件读取和写入

class Test(object):
    # 读取 两种方法
    def read(self):
        with(open("ccc.csv", "r")) as f:
            reader = csv.reader(f)
            next(reader)  # 是为了从数据开始读 第一行是key 值
            for x in reader:
                print(x)

    def read2(self):
        with open("ccc.csv", 'r') as f:
            reader = csv.DictReader(f)  # 读取成一个字典的 形式

    header = ["name", "age", "height"]
    rows = [
        ("张珊", 12, 160),
        ("李四", 12, 160),
        ("王五", 12, 160)
    ]

    def write(self):
        with open('CCC.csv', 'w', encoding='utf-8', newline='') as f:
            writer = csv.writer(f)
            writer.writerow(self.header)
            writer.writerows(self.rows)
    row_dict=[
        {'name':"张珊",'age':12,'height':170},
        {'name':"张珊",'age':12,'height':170},
        {'name':"张珊",'age':12,'height':170},
    ]
    def write2(self):
        with open("csc.csv",'w',encoding="utf-8",newline='') as f:
            write=csv.DictWriter(f,self.header)
            write.writeheader()
            write.writerows(self.row_dict)
if __name__ == '__main__':
    test=Test()
    test.write2()

总结
1 写入的时候 会无故多出一行空行 那是因为open的时候 会自动增加一个\n ,在open的时候 newline="" 就可以了
2 写入的时候 使用字典写入在csv.DicWriter(f,self.header) 传入dict的key 值列表
3 写入的时候 记得加write.writeheader() 不会自动写入表头的 使用该方法才会写入

二 使用uuid 生产唯一ID
注意 有的方法时 四个方法 没有uuid2()
uuid.uuid1(),基于时间戳和MAC地址
uuid,uuid3(uuid.NAMESPACE_DNS,name),基于名字的MD5散列值,可以保证同一命名空间中不同名字的唯一性和不同命名空间的唯一性, 但同一命名空间的同一名字生成的UUID相同.
uuid.uuid4(),随机生成,很小的概率 重复
uuid.uuid5(uuid.NAMESPACE_DNS,name) 和uuid3类似 基于名字的SHA-1散列值

import uuid

uid1 =uuid.uuid1()
name="space"
namespace=uuid.NAMESPACE_DNS
uid3=uuid.uuid3(namespace,name)
uid4 =uuid.uuid4()
uid5=uuid.uuid5(namespace,name)

你可能感兴趣的:(边学边记,python,csv)