Python:使用 csv 模块读写 csv 文件

目录

一、读取 csv 文件

二、写入 csv 文件


一、读取 csv 文件

# -*- coding: utf-8 -*-

import csv
import sys

def read_csv_file(filename):
    with open(filename, 'r') as f:
        csv_reader = csv.reader(f)
        header_row = next(csv_reader)
        print(header_row) # 输出文件头
        cnt = 0
        for line in csv_reader: # 循环遍历文件的每一行数据
            cnt += 1
            print("line [{4}] : {0},{1},{2},{3}".format(line[0], line[1], line[2], line[3], cnt))

if "__main__" == __name__:
    filename = sys.argv[1]
    read_csv_file(filename)

执行读取脚本的效果如下(file-list.csv 文件有11行数据,第一行是 csv 文件头,其余行是数据):

$ python read-csv-file.py file-list.csv 
['名称', '大小', '路径', '修改时间']
line [1] : Security.evtx,391122944,C:\Windows\System32\winevt\Logs,2021-02-24 07:23:48
line [2] : MRT.exe,133326408,C:\Windows\System32,2017-12-24 21:45:48
line [3] : MRT-KB890830.exe,133326408,C:\Windows\System32,2017-12-24 21:45:50
line [4] : NvCplSetupInt.exe,97078976,C:\Windows\System32\DriverStore\FileRepository\nvdmwu.inf_amd64_26aa6356770b2e86,2016-09-12 21:15:30
line [5] : SOFTWARE,86245376,C:\Windows\System32\config,2021-02-20 09:31:27
line [6] : SOFTWARE,86077440,C:\Windows\System32\config\RegBack,2021-02-21 01:32:16
line [7] : SRUDB.dat,79495168,C:\Windows\System32\sru,2021-02-24 21:20:00
line [8] : RCORES64.dat,72520616,C:\Windows\System32,2020-04-08 04:44:38
line [9] : RCORES64.dat,72130584,C:\Windows\System32\DriverStore\FileRepository\hdxsgma4.inf_amd64_67e758791d8608ce,2015-08-04 00:21:58
line [10] : BootCKCL.etl,48234496,C:\Windows\System32\WDI\LogFiles,2021-02-20 09:33:51

二、写入 csv 文件

# -*- coding: utf-8 -*-

import csv
import sys

def write_csv_file(filename):
    with open(filename, 'w') as f:
        csv_writer = csv.writer(f)
        csv_writer.writerow(['type', 'name', 'age'])
        for i in range(5):
            csv_writer.writerow(['dog' + str(i), 'dog-' + str(i),  str(i)])
        rows = list()
        for i in range(6, 10):
            rows.append(['dog' + str(i), 'xdog,-' + str(i),  str(i)]) # name 字段中包含了逗号(,)
        csv_writer.writerows(rows)

if "__main__" == __name__:
    filename = sys.argv[1]
    write_csv_file(filename)

执行写入脚本的效果如下:

$ python write-csv-file.py dogs.csv
$ cat dogs.csv 
type,name,age
dog0,dog-0,0
dog1,dog-1,1
dog2,dog-2,2
dog3,dog-3,3
dog4,dog-4,4
dog6,"xdog,-6",6
dog7,"xdog,-7",7
dog8,"xdog,-8",8
dog9,"xdog,-9",9

可以发现,当 csv 行的内容部分包含逗号(,)的时候,这个字段会被双引号修饰。


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值