2017-06-08 18 views
0

私はcsvファイルを読むためのスクリプトを書いています。 csvファイルとスクリプトは同じディレクトリにあります。しかし、ファイルを開こうとすると、私にはFileNotFoundError: [Errno 2] No such file or directory: 'zipcodes.csv'が届きます。私は、ファイルを読み取るために使用されるコードは、私は、ファイルへのフルパスを与えた場合、それは動作しますPython open()にはフルパスが必要です

with open('zipcodes.csv', 'r') as zipcode_file: 
    reader = csv.DictReader(zipcode_file) 

です。なぜopen()にファイルの絶対パスが必要なのですか?

+2

'os.getcwd()'とは何ですか?これは、ファイルが格納されているディレクトリと同じディレクトリではないため、相対パスが機能しない理由です。 –

+3

他のディレクトリにpythonスクリプトを実行しているので、_that_は現在のディレクトリです。 –

+0

私はVisual Studioコードデバッガでコードを実行しています。 – Arun

答えて

1

私は、問題を特定しました。 Visual Studio Codeデバッガでコードを実行していました。私がオープンしたルートディレクトリは、私のファイルのレベルを超えていました。私は同じディレクトリを開いたとき、それは働いた。

0

私はPythonが使用するディレクトリ...しようと、現在のpythonの.pyファイルの現在のパスを開始することを知っているとは思わない:

mypath = os.path.dirname(os.path.abspath(__file__)) 
with open(mypath+'/zipcodes.csv', 'r') as zipcode_file: 
    reader = csv.DictReader(zipcode_file) 
2

documentationから:

ファイルは、パスのようなオブジェクトです。このファイルは、次のようになります。パス名(絶対または相対 を現在の作業ディレクトリに)、またはラップするファイルの 整数ファイル記述子を指定します。あなたがオープンするファイルは、実行中のスクリプトの現在のフォルダにない場合

ので、あなたが使用することにより、絶対パス、または作業ディレクトリまたは/および絶対パスを取得を使用することができます。

使用して、スクリプトを実行している間
import os 
# Look to the path of your current working directory 
working_directory = os.getcwd() 
file_path = working_directory + 'my_file.py' 

それとも、あなたは絶対パスを取得することができます。

import os 
# Look for your absolute directory path 
absolute_path = os.path.dirname(os.path.abspath(__file__)) 
file_path = absolute_path + '/folder/my_file.py' 
関連する問題