web-dev-qa-db-ja.com

pandas.read_csvファイルが未加工テキストの正しいパスにもかかわらず見つからない

ファイルパスが正しく、生の文字列を使用しているにもかかわらずエラーが発生した場合、pd.read_csv()関数を使用して.csvファイルをロードしようとしています。

import pandas as pd
df = pd.read_csv('‪C:\\Users\\user\\Desktop\\datafile.csv')
df = pd.read_csv(r'‪C:\Users\user\Desktop\datafile.csv')
df = pd.read_csv('C:/Users/user/Desktop/datafile.csv')

すべて以下のエラーが発生します。

FileNotFoundError:ファイルb '\ xe2\x80\xaaC:/Users/user/Desktop/tutorial.csv'(または関連するパス)が存在しません。

ファイルを作業ディレクトリにコピーした場合のみ、正しくロードされます。

誰がエラーの原因になっているのか知っていますか?

以前に問題なくフルファイルパスで他のデータセットをロードしていましたが、現在、python(Anacondaパッケージインストーラー経由))を再インストールしてから問題が発生しています。


編集
問題の原因となっている問題を見つけました。
ファイルプロパティウィンドウからファイルパスをコピーしていたときに、見えないように見える別の文字を意図せずコピーしました。
コピーしたstringを割り当てると、Unicodeエラーも発生します。

その目に見えない文字を削除すると、上記のコードが機能します。

14
Impuls3H

私の特定の問題では、ファイルを正しくロードできなかったのは、Windowsのファイルプロパティのセキュリティタブからファイルパスをコピーしたときに導入された「見えない」文字が原因でした。

この文字はe2 80 aa、左から右への埋め込みシンボルであるU + 202AのUTF-8エンコード。文字(文字列の左端の文字)を見つけたら、消去(バックスペースを押すか削除)することで簡単に削除できます。

注:ここでの答えは私の質問に答えないため、私が答えることを選んだのは、(コメントに見られるように)数人が私と同じ状況に出会うかもしれないと思うからです。また、この質問に解決済みのマークを付けなかったため、時々新しい回答があるようです。

0
Impuls3H

これを試して、動作するかどうかを確認してください。これは、指定したパスとは無関係です。

pd.read_csv(r'C:\Users\aiLab\Desktop\example.csv')

ここで、rは特殊文字であり、生の文字列を意味します。したがって、文字列リテラルの前に付けます。

https://www.journaldev.com/23598/python-raw-string

Pythonの生の文字列は、文字列リテラルの前に「r」または「R」を付けて作成されます。 Python生の文字列は、バックスラッシュ()をリテラル文字として扱います。これは、バックスラッシュを含む文字列が必要で、エスケープ文字として扱いたくない場合に便利です。

19
WaterRocket8236

$ 10は、.pyファイルの場所に関してはファイルパスは正しいが、pythonを呼び出す場所に関しては正しくないことを示しています

たとえば、script.pyが〜/ script /にあり、file.csvが〜/にあるとします。 script.pyに含まれているとしましょう

import pandas
df = pandas.read_csv('../file.csv') # correct path from ~/script/ where script.py resides

〜/からpython script/script.pyを実行すると、FileNotFoundエラーが発生します。ただし、〜/ script /からpython script.pyを実行すると機能します。

8
hertopnerd

以下はばかげた間違いですが、ファイルに問題がある可能性があります。

ファイルの名前を手動でadfa123からabc.csvに変更しました。ファイルの拡張子は隠されていました。名前を変更すると、実際のファイル名はabc.csv.csvになりました。その後、名前から余分な.csvを削除しましたが、すべて問題ありませんでした。

それが他の誰にも役立つことを願っています。

3
Khan
import pandas as pd

path1 = 'C:\\Users\\Dell\\Desktop\\Data\\Train_SU63ISt.csv'
path2 = 'C:\\Users\\Dell\\Desktop\\Data\\Test_0qrQsBZ.csv'

df1 = pd.read_csv(path1)
df2 = pd.read_csv(path2)

print(df1)
print(df2)
3
Arjun Sanchala

Windowsシステムでは、os.path.normcase

パス名の大文字小文字を正規化します。UnixおよびMac OS Xでは、パスを変更せずに返します。大文字と小文字を区別しないファイルシステムでは、パスを小文字に変換します。Windowsでは、スラッシュをバックスラッシュに変換します。パスのタイプがstrまたはbytesでない場合(直接またはos.PathLikeインターフェイスを介して間接的に)、TypeErrorを送出します。

import os
import pandas as pd

script_dir = os.getcwd()
file = 'example_file.csv'
data = pd.read_csv(os.path.normcase(os.path.join(script_dir, file)))
2
Radmar

Windowsマシンを使用している場合。ファイル拡張子を確認してください。ファイルがfileName.csvではなくfileName.csv.txtとして保存される可能性が高くなります。これを確認するには、フォルダオプションの下にある[ファイル名拡張子]チェックボックスを選択します(スクリーンショットをご覧ください)。

以下のコードが私のために働いた:

import pandas as pd
df = pd.read_csv(r"C:\Users\vj_sr\Desktop\VJS\PyLearn\DataFiles\weather_data.csv");

fileName.csv.txtの場合、名前を変更/修正してfileName.csv

windows 10スクリーンショット

うまくいけば幸運

2
vj sreenivasan

「c:\」ドライブにあるフォルダからcsvファイルを読み取ろうとしましたが、escape,type error, unicode......というエラーが発生しますが、このコードは機能します変数を取得し、rを追加して読み取ります。

rank = pd.read_csv (r'C:\Users\Dell\Desktop\datasets\iris.csv') 
df=pd.DataFrame(rank)
1
Rakesh

見えない文字を削除する方法には別の問題があります。

私の解決策は、プロパティウィンドウの代わりにファイルウィンドウからファイルパスをコピーすることです。

ファイルパスを満た​​す必要があることを除いて、それは問題ではありません。

1
Dee Lee

os.path.joinを使用してファイルパスを作成してみてください。

import os
f_path = os.path.join(*['C:', 'Users', 'user', 'Desktop', 'datafile.csv'])
df = pd.read_csv(f_path)
1
AlexG

同じ問題が発生しました。パスは正しかった。ファイル名を変更することで問題が解決するようです。

古いファイル名:シーズン2017/2018 Premier League.csv新しいファイル名:test.csv

おそらく空白または「/」

1
Stefan Samba

Visual Studioが提供するインタラクティブ機能を使用してファイルを実行すると、同じ問題が発生しました。ネイティブのコマンドラインで実行するように切り替えて、それは私のために働いた。

0
Patrick Mutuku

pd.read_csv('yourDirectory\yourData.csv')の代わりにpd.read_csv('yourDirectory//yourData.csv')を使用します

0
Arun