[ホーム] - [よく見るエラーメッセージ一覧] - [open関数にて "OSError: [Errno 22] Invalid argument" の原因と対処]

【Python】open関数にて "OSError: [Errno 22] Invalid argument" の原因と対処 | Python で csv ファイルを読み込み | Windows





作成日:2022/02/09


openでこのエラーが発生する場合、主な原因はファイルの読み込みに失敗です。ファイルパスの問題が大きな原因です。
ファイルが存在しているか確認してください。

よくあるのはファイルパスの指定方法の誤りです。

ファイルパスは以下のいずれかの方法で記述する必要があります。

・特殊文字は \ でエスケープします。例:"c:\\temp\\testfile.csv"
・raw 文字列を使用する。raw 文字列は先頭に r を付けます。例: r"c:\temp\testfile.csv"




【間違い】

import csv

csvfile = open("c:\temp\testfile.csv" , "r" , encoding = "shift_jis" , errors="" , newline="")

f = csv.reader(csvfile , delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)

h = next(f)

print(h)

for row in f:
print(row)

Traceback (most recent call last):
File "c:\temp\test.py", line 3, in csvfile = open("c:\temp\testfile.csv" , "r" , encoding = "shift_jis" , errors="" , newline="")
OSError: [Errno 22] Invalid argument: 'c:\temp\testfile.csv'

【正しい】

import csv

csvfile = open("c:\\temp\\testfile.csv" , "r" , encoding = "shift_jis" , errors="" , newline="")

f = csv.reader(csvfile , delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)

h = next(f)

print(h)

for row in f:
print(row)

['東京京', '名古屋', '大阪']
['100', '50', '30']
['50', '30', '70']
['15', '55', '100']

サンプルコード

以下は Windows 10 環境における正常実行可能なサンプルコードです。

Windows 環境の Python にて、 csv (Comma Separated Value) ファイルを読み込むサンプルプログラムを紹介します。
次の例ではc:\temp\testfile.csv をcsv ファイルとして読み込みんでいます。
ヘッダーを出力し、その後各行を1行ごとに出力しています。

サンプルコード:


import csv

csvfile = open(r"c:\temp\testfile.csv" , "r" , encoding = "shift_jis'" , errors="" , newline="")

f = csv.reader(csvfile , delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)

h = next(f)

print(h)

for row in f:
print(row)


実行結果:

['東京京', '名古屋', '大阪']
['100', '50', '30']
['50', '30', '70']
['15', '55', '100']







本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)

[ホーム] - [よく見るエラーメッセージ一覧]