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/