python 操作CSV 格式文件

比如有如下格式的CSV文件:

Row Name Age Country
1 John 20 Australia
2 Peter 20 USA
3 Simon 25 China
4 Alex 21 Germany

一、读取 CSV 文件,输出为字典

import csv
import os

def ReadCSVasDict(csv_file):
    try:
        with open(csv_file) as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                print row['Row'], row['Name'], row['Country']
    except IOError as err:
            print("I/O error({0})".format(err))    
    return

currentPath = os.getcwd()
csv_file = currentPath + "/csv/Names.csv"

ReadCSVasDict(csv_file)

二、将字典类型数据,写入 CSV 文件

import csv
import os

def WriteDictToCSV(csv_file,csv_columns,dict_data):
    try:
        with open(csv_file, 'w') as csvfile:
            writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
            writer.writeheader()
            for data in dict_data:
                writer.writerow(data)
    except IOError as err:
            print("I/O error({0})".format(err)    
    return            

csv_columns = ['Row','Name', 'Age', 'Country']
dict_data = [
    {'Row': 1, 'Name': 'John', 'Age': 20, 'Country': 'Australia'},
    {'Row': 2, 'Name': 'Peter', 'Age': 20, 'Country': 'USA'},
    {'Row': 3, 'Name': 'Simon', 'Age': 25, 'Country': 'China'},
    {'Row': 4, 'Name': 'Alex', 'Age': 21, 'Country': 'Germany'},
    ]

currentPath = os.getcwd()
csv_file = currentPath + "/csv/Names.csv"

WriteDictToCSV(csv_file,csv_columns,dict_data)

三、读取 CSV 文件,输出为列表类型

import csv
import os

def ReadCSVasList(csv_file):
    try:
        with open(csv_file) as csvfile:
            reader = csv.reader(csvfile, dialect='excel', quoting=csv.QUOTE_NONNUMERIC)
            datalist = []
            datalist = list(reader)
            return datalist
    except IOError as err:
            print("I/O error({0})".format(err))    
    return        


currentPath = os.getcwd()
csv_file = currentPath + "/csv/Names.csv"

csv_data_list = ReadCSVasList(csv_file)
print(csv_data_list)

# To Ignore 1st Row (Headers)          
csv_data_list.pop(0)
print(csv_data_list)

# append to list
csv_data_list.append(['5', 'Jim', 18, 'USA'])

print(csv_data_list)

四、将列表类型数据,写入 CSV 文件

import csv
import os

def WriteListToCSV(csv_file,csv_columns,data_list):
    try:
        with open(csv_file, 'w') as csvfile:
            writer = csv.writer(csvfile, dialect='excel', lineterminator = '\n', 
                                quoting=csv.QUOTE_NONNUMERIC)
            writer.writerow(csv_columns)
            for data in data_list:
                writer.writerow(data)
    except IOError as err:
            print("I/O error({0})".format(err))    
    return              

csv_columns = ['Row','Name', 'Age', 'Country']
csv_data_list = [
    [1, 'John', 20, 'Australia'],
    [2, 'Peter', 20, 'USA'],
    [3, 'Simon', 25, 'China'],
    [4, 'Alex', 21, 'Germany']
    ]
    
currentPath = os.getcwd()
csv_file = currentPath + "/csv/Names.csv"

WriteListToCSV(csv_file,csv_columns,csv_data_list)

五、参考

https://csjzhou.github.io/2018-02-16-blog-python-csv-manipulation/

posted @ 2020-05-31 15:47  xyztank  阅读(132)  评论(0编辑  收藏  举报