В тази публикация ще разгледаме как да четем и пишем CSV файлове в Python. Примерите използват модула CSV и Pandas.
Този пример за код чете файл с име orders.csv
и преглежда данните:
import csv f = open('orders.csv', 'rt') orders = csv.reader(f) for order in orders:
print(order) f.close()
Изход на поръчки.csv:
['OrderID', 'CustomerID', 'OrderDate'] ['10248', '4', '10/02/2020'] ['10249', '2', '10/02/2020'] ['10250', '7', '10/02/2020']
Използване на DictReader
метод всеки ред в CSV файла се представя като ред в речника, като заглавката на колоната е ключът.
import csv orders = csv.DictReader(open('orders.csv')) for order in orders:
print(order)
Изход на поръчки.csv:
{'OrderID': '10248', 'CustomerID': '4', 'OrderDate': '10/02/2020'} {'OrderID': '10249', 'CustomerID': '2', 'OrderDate': '10/02/2020'} {'OrderID': '10250', 'CustomerID': '7', 'OrderDate': '10/02/2020'}
За да използваме Pandas, първо трябва да инсталираме библиотеката Pandas.
За да инсталирате, изпълнете тази команда: pip3 install pandas
.
import pandas orders = pandas.read_csv('orders.csv') print(orders)
Изход на поръчки.csv:
OrderID CustomerID OrderDate 10248
4
10/02/2020 10249
2
10/02/2020 10250
7
10/02/2020
from pandas import DataFrame import pandas as pd order = pd.DataFrame({'OrderID': ['10251', '10252', '10253'],
'CustomerID': ['5', '1', '8'],
'OrderDate': ['11/02/2020', '11/02/2020', '11/02/2020']}) order.to_csv('newOrders.csv', index=False)
Изход на newOrders.csv:
OrderID,CustomerID,OrderDate 10251,5,11/02/2020 10252,1,11/02/2020 10253,8,11/02/2020
Режимът по подразбиране при запис в csv файл е 'w'
. Ако искаме да добавим данни към съществуващ CSV файл, трябва да използваме режима на добавяне, напр. mode='a'
from pandas import DataFrame import pandas as pd order = pd.DataFrame({'OrderID': ['10254'],
'CustomerID': ['3'],
'OrderDate': ['11/02/2020']}) order.to_csv('newOrders.csv', mode='a', index=False, header=False)
Изход на newOrders.csv:
OrderID,CustomerID,OrderDate 10251,5,11/02/2020 10252,1,11/02/2020 10253,8,11/02/2020 10254,3,11/02/2020
N.B. Първият ред се използва като заглавка на колоната
import csv with open('orders.csv', 'w', newline='') as file:
order = csv.writer(file)
order.writerow(['OrderID', 'CustomerID', 'OrderDate'])
order.writerow(['10251', '6', '11/02/2020'])
order.writerow(['10252', '9', '11/02/2020'])
order.writerow(['10253', '5', '11/02/2020'])
Изход на поръчки.csv:
OrderID,CustomerID,OrderDate 10251,6,11/02/2020 10252,9,11/02/2020 10253,5,11/02/2020
Ако искате да добавите към съществуващ csv файл с помощта на csv модула, трябва да въведете 'a'
параметър към open()
метод. Също така трябва да пропуснете „заглавията“.
Например:
with open('orders.csv', 'a', newline='') as file:
order = csv.writer(file)
order.writerow(['10251', '6', '11/02/2020'])
Можем да използваме и DictWriter
метод на csv
клас за създаване и запис на CSV файл.
import csv with open('orders.csv', 'w', newline='') as file:
fieldnames = ['OrderID', 'CustomerID', 'OrderDate']
order = csv.DictWriter(file, fieldnames=fieldnames)
order.writeheader()
order.writerow({'OrderID': '10251', 'CustomerID': 7, 'OrderDate': '11/02/2020'})
order.writerow({'OrderID': '10252', 'CustomerID': 3, 'OrderDate': '11/02/2020'})
order.writerow({'OrderID': '10253', 'CustomerID': 1, 'OrderDate': '11/02/2020'})
Изход на поръчки.csv:
OrderID,CustomerID,OrderDate 10251,7,11/02/2020 10252,3,11/02/2020 10253,1,11/02/2020