Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用したCSVファイルの読み取りと書き込み


CSV(コンマ区切り値を表す)形式は、スプレッドシートで使用される一般的に使用されるデータ形式です。 Pythonの標準ライブラリのcsvモジュールは、CSVファイルに対して読み取り/書き込み操作を実行するためのクラスとメソッドを提供します。

writer()

csvモジュールのこの関数は、データを区切り文字列に変換してファイルオブジェクトに格納するライターオブジェクトを返します。この関数には、パラメーターとして書き込み権限を持つファイルオブジェクトが必要です。ファイルに書き込まれるすべての行は、改行文字を発行します。行間に余分なスペースがないように、改行パラメータは「」に設定されています。

writerクラスには次のメソッドがあります

writerow()

この関数は、アイテムを反復可能(リスト、タプル、または文字列)で書き込み、コンマ文字で区切ります。

writerows()

この関数は、反復可能オブジェクトのリストをパラメーターとして受け取り、各項目をコンマ区切りの項目行としてファイルに書き込みます。

次の例は、write()関数の使用法を示しています。まず、ファイルが「w」モードで開かれます。このファイルは、ライターオブジェクトを取得するために使用されます。次に、タプルのリスト内の各タプルは、writerow()メソッドを使用してファイルに書き込まれます。

>>> import csv
>>> persons=[('Lata',22,45),('Anil',21,56),('John',20,60)]
>>> csvfile=open('persons.csv','w', newline='')
>>> obj=csv.writer(csvfile)
>>> for person in persons:
obj.writerow(person)
>>> csvfile.close()

これにより、現在のディレクトリに「persons.csv」ファイルが作成されます。次のデータが表示されます。

Lata,22,45
Anil,21,56
John,20,60

リストを反復処理して各行を個別に書き込む代わりに、writerows()メソッドを使用できます。

>>> csvfile = open('persons.csv','w', newline='')
>>> obj = csv.writer(csvfile)
>>> obj.writerows(persons)
>>> obj.close()

read()

この関数は、csvファイルの行のイテレータを返すリーダーオブジェクトを返します。通常のforループを使用すると、ファイル内のすべての行が次の例で表示されます。

>>> csvfile=open('persons.csv','r', newline='')
>>> obj=csv.reader(csvfile)
>>> for row in obj:
print (row)
['Lata', '22', '45']
['Anil', '21', '56']
['John', '20', '60']

リーダーオブジェクトはイテレーターであるため、組み込みのnext()関数は、csvファイルのすべての行を表示する場合にも役立ちます。

>>> csvfile = open('persons.csv','r', newline='')
>>> obj = csv.reader(csvfile)
>>> while True:
try:
row=next(obj)
print (row)
except StopIteration:
break

csvモジュールは、方言クラスも定義します。 Dialectは、CSVプロトコルを実装するために使用される一連の標準です。使用可能な方言のリストは、list_dialects()関数で取得できます。

>>> csv.list_dialects()
['excel', 'excel-tab', 'unix']

DictWriter()

この関数は、DictWriterオブジェクトを返します。ライターオブジェクトに似ていますが、行はディクショナリオブジェクトにマップされます。この関数には、書き込み権限のあるファイルオブジェクトと、辞書でfieldnamesパラメーターとして使用されるキーのリストが必要です。これは、ファイルの最初の行をヘッダーとして書き込むために使用されます。

writeheader()

このメソッドは、辞書のキーのリストをファイルの最初の行としてコンマ区切りの行として書き込みます。

次の例では、辞書アイテムのリストが定義されています。リストの各項目は辞書です。 writrows()メソッドを使用して、コンマ区切りでファイルに書き込まれます。

>>> persons=[{'name':'Lata', 'age':22, 'marks':45}, {'name':'Anil', 'age':21, 'marks':56}, {'name':'John', 'age':20, 'marks':60}]
>>> csvfile=open('persons.csv','w', newline='')
>>> fields=list(persons[0].keys())
>>> obj=csv.DictWriter(csvfile, fieldnames=fields)
>>> obj.writeheader()
>>> obj.writerows(persons)
>>> csvfile.close()

ファイルには次の内容が表示されます。

name,age,marks
Lata,22,45
Anil,21,56
John,20,60

DictReader()

この関数は、基になるCSVファイルからDictReaderオブジェクトを返します。リーダーオブジェクトの場合と同様に、これもイテレーターであり、ファイルのコンテンツを取得するために使用します。

>>> csvfile = open('persons.csv','r', newline='')
>>> obj = csv.DictReader(csvfile)

クラスはfieldnames属性を提供し、ファイルのヘッダーとして使用される辞書キーを返します。

>>> obj.fieldnames
['name', 'age', 'marks']

DictReaderオブジェクトのループを使用して、個々の辞書オブジェクトをフェッチします。

>>> for row in obj:
print (row)

これにより、次の出力が得られます。

OrderedDict([('name', 'Lata'), ('age', '22'), ('marks', '45')])
OrderedDict([('name', 'Anil'), ('age', '21'), ('marks', '56')])
OrderedDict([('name', 'John'), ('age', '20'), ('marks', '60')])

OrderedDictオブジェクトを通常の辞書に変換するには、最初にコレクションモジュールからOrderedDictをインポートする必要があります。

>>> from collections import OrderedDict
>>> r=OrderedDict([('name', 'Lata'), ('age', '22'), ('marks', '45')])
>>> dict(r)
{'name': 'Lata', 'age': '22', 'marks': '45'}

この記事では、csvモジュールの機能について説明しました。


  1. Pythonを使用したWebサイトブロッカー

    大規模なIT企業で働いている場合は、その2つのWebサイト、特にFacebook、YouTube、Instagramなどのソーシャルネットワーキングサイトがブロックされていることに気付くかもしれません。 サードパーティのアプリケーションを使用して特定のWebサイトをブロックする代わりに、選択したWebサイトをブロックする独自のカスタムアプリケーションを開発できます。PythonでWebサイトブロッカーを開発することもそれほど難しくありません。それが私たちがやろうとしていることです-私たちが望むウェブサイトをブロックするPythonスクリプトを開発します。 前提条件: Python3.xが

  2. Pythonopenpyxlモジュールを使用してExcelファイルの読み取りと書き込み

    Pythonは、Excelファイルを操作するためのopenpyxlモジュールを提供します。 このモジュールでは、Excelファイルの作成方法、書き込み方法、読み取り方法などを実装できます。 openpyxlモジュールをインストールするには、コマンドプロンプトでこのコマンドを記述できます pip install openpyxl シートにタイトル名を付けたい場合 サンプルコード import openpyxl my_wb = openpyxl.Workbook() my_sheet = my_wb.active my_sheet_title = my_sheet.title print