2016-12-13 71 views
1

私はcsvファイルを開いて読み込もうとしていますが、ファイルパスが明らかに存在するとファイルを見つけることができません。それは、このような問題の可能性が高い原因がありますので、Pythonファイルを開くことができません。ファイルを見つけることができません。

コード

#Load the CSV file into CSV reader 
csvfile = open("C:/Users/Sam/Desktop/big data/workspace/test.csv",'rb') 

エラー

Traceback (most recent call last): 
    File "C:/Users/Sam/Desktop/big data/workspace/yelpdatabase.py", line 16, in <module> 
    csvfile = open("C:/Users/Sam/Desktop/big data/workspace/test.csv",'rb') 
FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/Sam/Desktop/big data/workspace/test.csv' 
+3

コール前ファイルが存在するかどうかを確認する[os.path.exists()](http://docs.python.org/2/library/os.path.html#os.path.exists) – davedwards

+0

As @ downshiftはファイルが存在することを確認したいと言っています。もう1つの提案として、os.path.joinを使用してファイルパスをより確実に構築しようとする必要があります。この質問の答えは次のとおりです。https://stackoverflow.com/questions/2953834/windows-path-in-python –

+0

@downshift:うーん...いいえ、それは[LBYL](https://docs.python.org/3/glossary.html#term-lbyl)のパターンで、競争条件に左右されます。テストと 'open'の間でそれを削除します)' open'自体が暗黙的に存在をチェックする 'stat'チェックで時間を無駄にします。正しい解決策は[EAFP](https://docs.python.org/3/glossary.html#term-eafp)です: 'open'を呼び出し、' OSError'(または現代のPythonのサブクラス、例えば 'FileNotFoundError'をこの場合)、エラーを処理できます。 'os.path。インタラクティブなインタプリタのデバッグでは有効ですが、実動コードではありません。 – ShadowRanger

答えて

-2

Edited-ない場合は、必ずしもこの特定の場合には、この投稿この

path = r"C:/Users/Sam/Desktop/big data/workspace/test.csv" 
csvfile = open(path, 'rb') 
+0

スペースが理由ではありません。これを参照してください - http://stackoverflow.com/a/14852407/5352399 –

+0

私は同じエラーが発生します。 – user

+0

生の文字列は、バックスラッシュされたパスを使用するのに適していますが、スラッシュを使用している場合は冗長です。 「raw-ify」にバックスラッシュはありません。 OPの非生バージョンのこの文字列は、まったく同じ内容を持つことになります。 – ShadowRanger

0

を試してみてください。 Desktop(ほとんどの他のユーザーフォルダと同様に)は擬似魔法のフォルダであり、常にそれに頼ることはできませんC:\Users\USERNAME\Desktop。特に、デスクトップ上のファイルが実際にそこに存在するとは限りません。それはAll UsersDesktopフォルダーにあり、Windowsライブラリーのフォルダーリダイレクトマジックによってリダイレクトされます。

あなたが動的にユーザーのデスクトップへの正しいパスを取得したい場合は、あなたがそうするようにpywin32拡張子を使用することができます(this answerに帽子の先端)

from win32com.shell import shell, shellcon 
shell.SHGetFolderPath(0, shellcon.CSIDL_MYPICTURES, None, 0) 

、またはのための共通Desktopフォルダを取得するにはすべてのユーザー:

import win32com.client 
objShell = win32com.client.Dispatch("WScript.Shell") 
allUserDocs = objShell.SpecialFolders("AllUsersDesktop") 

this answerに帽子の先端)。上記

両方のアプローチは、特定および一般Desktopフォルダを共有ユーザーのためのFOLDERID_DesktopFOLDERID_PublicDesktopを使用してSHGetKnownFolderPath(どちらかpywin32と、それはそれをサポートしている場合、または直接​​ラッパー経由)を呼び出すコードでVista上で交換可能と高くなる可能性があります。

2

このようにしてみてください。

csvfile = open(r"C:/Users/Sam/Desktop/big data/workspace/test.csv","rb") 

test.csv.txt時々ウィンドウが

Pythonの2.7.12を使用して

検査済みファイル名の一部としての.csv取る必ずあなたのファイル名がないことを確認します

チェックアウトhttp://shortcode.pro/code/open-csv-file-with-python/

+0

これはほとんどが[this(wrong)answer](http://stackoverflow.com/a/41112409/364696)と重複しています(スラッシュを使用している場合は生の文字列は無関係ですが、文字列にバックスラッシュがない場合生のリテラルと非生のリテラルは同じ意味を持ちます)。ファイル拡張子の隠蔽がそれらを上回っているかもしれないという示唆は良いことです(私はそれを忘れていました。新しいWindowsシステムで最初に行うことは '隠されたファイルタイプの拡張子を隠す 'ためです)。 – ShadowRanger

+0

あなたは生の文字列については正しいですが、私はファイル拡張子 – monchoz

関連する問題