2012-08-30 14 views
24

何らかの理由で、私のコードが動作していましたが、簡単な.yamlファイルを開くのに問題がありました。私はファイルの周りを移動しようとしましたが、open()にはファイルへのフルパスが与えられています。私はこの質問が数回前に尋ねられているのを見ましたが、問題を解決した回答を見ませんでした。python open()メソッドIOError:[Errno 2]そのようなファイルやディレクトリがありません:

ファイルの呼び出し方法、ファイルの移動先、その他の使用方法のアドバイスをいただければ幸いです。

def readYaml(): 
    file1 = open('recentlyUpdated.yaml') 
    print 'opened recently updated' 
    companyData = yaml.load(file1) 
    file1.close() 
    print 'read recentyl updated' 

    file2 = open('sortedLists.yaml') 
    sortedLists = yaml.load(file2) 
    file2.close() 

    return companyData, sortedLists 

エラーは次のとおりです。

file1 = open('recentlyUpdated.yaml') 
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml' 

当然のことながら、私は、これはファイルの正しい名前であることを確認しました。

答えて

26

ファイルが存在することを確認してください。 その後、いずれかのことができます:あなたがやっていたよう

  • コールos.chdir(dir)dirされているファイルが配置 あるフォルダ、そしてちょうどその名前でファイルを開きます。
  • openコールでファイルへの絶対パスを指定します。あなたはchdir方法で行った場合、あなたは現在の作業ディレクトリ内のファイルの一覧を表示するos.listdir()を呼び出すことができますdir = r'C:\Python32'

    :あなたのパスがそう のように、バックスラッシュを使用している場合

生の文字列を使用することを忘れないでください。

pythonがファイルを見つける方法を明確にしてください。 絶対パスは、コンピュータのルートディレクトリで始まるパスです(たとえば、Windowsの場合は 'C:\ Python \ scripts ..')。 相対パスは、コンピュータのルートディレクトリで始まらず、代わりにworking directoryと呼ばれるものに相対的なパスです。あなたはos.getcwd()を呼び出すことによって、Pythonの現在の作業ディレクトリを見ることができます。

open('sortedLists.yaml')を実行しようとすると、pythonは現在の作業ディレクトリ内のファイルを検索するため、相対パスを渡していることを確認します。 os.chdirを呼び出すと、現在の作業ディレクトリが変更されます。

たとえば、file.txtは `C:\ Folder 'にあります。それを開くには

は、あなたが行うことができます:ファイルが既存することができる

os.chdir(r'C:\Folder') 
open('file.txt') #relative path, looks inside the current working directory 

または

open(r'C:\Folder\file.txt') #full path 
+0

os.chdir(dir)を使用する場合は、パスをディレクトリまたは単にディレクトリ名? また、ファイルの名前を取得すると、open()またはopen(os.chdir(dir))を記述しますか? – Santiago

+0

@サンティアゴ私は私の答えでこれを明確にしました。 – Lanaru

+1

+ 1生の文字列r "の場合 – WKordos

4

が異なるパスを有することができます。ファイルの絶対パスを書き込んでみてください。

os.listdir()を試してみてください。atleast pythonがファイルを見ていることを確認する機能があります。

としてそれを試してみてください... >>> は、Pythonを>>>に行く...コンフィギュレーションを実行するために行く

file1 = open('Drive:\Dir\recentlyUpdated.yaml')

+1

私のコンピュータ上のファイルパスを認識できないようです。ファイルを検索する方法はありますか? @sshekar – Santiago

+0

このチップはありがとう。 – Led

-1

run configuration need to be changed

の変化は、あなたが行っている、あなたのコード名を参照してください を実行しますそれが間違っている場合に実行するには......不要なコード名を削除してから適切な引数で実行してください

+0

この質問には、Eclipseが使用されているとは言えません。 – Nogoseke

関連する問題