2017-08-05 47 views
-1

all。私はpythonの "そのようなファイルやディレクトリ"の問題に遭遇しています。私がこれまで試した同じディレクトリにあるファイルと絶対パスを使用している場合の両方で "No such file or directory"エラーが発生しました

もの:私は考えることができ、任意のプログラムを閉じる

  • は私が
  • を実行しているプログラムと同じディレクトリ内のファイルを持つ
  • ファイルが開いている場合がありますバックスラッシュtを変更するバックスラッシュとスペース
  • をエスケープバックスラッシュ
  • のエスケープ
  • 絶対パス名を使用しますO前方私もos.getcwdとos.path.abspathと正確にパスをコピー&ペーストして確認したファイル名

からすべてのスペース、特殊記号、数字を削除

  • スラッシュ。

    私はここで何が起こっているのか分かりません。私は今失っている。ファイルがまだ分かりにくいバックグラウンドプログラムでまだ開いている場合、この同じエラーが出ますか?

    これは、コードの該当ビットです:

    print(os.getcwd()) 
    print(os.path.abspath('RainyGenki.json')) 
    
    deckName = "C:\Users\myName\My Documents\LiClipse Workspace\KanjiDrag\RainyGenki.json" 
    deck = open(deckName, 'r') #opens card deck 
    

    これはエラーメッセージです:生の文字列を使用して

    C:\Users\myName\My Documents\LiClipse Workspace\KanjiDrag 
    C:\Users\myName\My Documents\LiClipse Workspace\KanjiDrag\RainyGenki.json 
    Traceback (most recent call last): 
        File "C:\Users\myName\My Documents\LiClipse Workspace\KanjiDrag\kanji_drag\kanji_main.py", line 79, in <module> 
        deck = open(deckName, 'r') #opens card deck 
    IOError: [Errno 2] No such file or directory: 'C:\\Users\\myName\\My Documents\\LiClipse Workspace\\KanjiDrag\\RainyGenki.json' 
    
  • 答えて

    0

    ...

    あなたは確認ことであればあなたのパスはOKです。その後、生の文字列にはPython構文を使用します:

    普通の文字列:文字列リテラルは、単一の 引用符( ')または二重引用符( ")に一致するように囲むことができます。これらは、 の3つの一重引用符または二重引用符(これらは一般に二重引用符で囲まれた文字列として参照されます)と一致するように囲むこともできます。 backslash()文字は、 改行、バックスラッシュ自体、引用符文字などの特別な意味を持つエスケープ文字の に使用されます。文字列リテラルは に接頭辞「r」または「R」を付けることもできます。そのような文字列は、生の文字列と呼ばれる であり、円記号 エスケープシーケンスを解釈するために異なる規則を使用します。接頭辞 'u'または 'U'は、文字列をUnicode 文字列にします。 Unicode文字列は、 Unicode ConsortiumおよびISO 10646で定義されているUnicode文字セットを使用します。以下に説明する追加のエスケープ シーケンスは、Unicode文字列で使用できます。 'b'または 'B'のプレフィックス はPython 2では無視されます。 Python 3ではリテラル がバイトリテラルになるはずです(コードが で自動的に2to3に変換された場合など)。 'u'または 'b'接頭辞は の後に 'r'接頭辞が続きます。

    これは基本的にbackslashエスケープシーケンスをエスケープするために、あなただけのような文字列の前に'r'を配置する必要があることを意味します:バックスラッシュをエスケープ、あなたはそれを試してみましたと言っていても

    deckName = r"C:\Users\myName\My Documents\LiClipse Workspace\KanjiDrag\RainyGenki.json" 
    ck = open(deckName, "r") 
    

    とすべきですまた、仕事:

    deckName = "C:\\Users\\myName\\My Documents\\LiClipse Workspace\\KanjiDrag\\RainyGenki.json" 
    ck = open(deckName, "r") 
    
    +0

    提案をいただきありがとうございます。残念ながら、それは私に同じエラーを与えました。私はこの場合に他に何を確認するか分からない。私はdeckName = (os.path.abspath( 'RainyGenki.json')を実行して、コピー貼り間違いを解消しました)まだ何もありません。私のエディタの設定方法に問題があると思っています。私はPyClientでLiClipseを使っています。プログラムでファイルを開こうとすると、決して幸運を逃したことはありません。 – F4cetious

    +0

    同じディレクトリにある '.txt'ファイルで試してみてください... –

    -1

    私はKanjiDragというフォルダがあったが、その中に、私はJSONファイルとメインモジュールのワットである実際のソースフォルダkanji_dragを持っていましたere。私が使用していたパスはKanjiDragフォルダにはアクセスしていましたが、kanji_dragフォルダにはアクセスしていませんでした。これは私の愚かなファイルI/Oミ​​スです。すべての返信をありがとう、私は私のプログラムのこの部分を洗練するときに私はまだ後で参照します。

    関連する問題