recentlyUpdated.yaml
Python スクリプトからファイルを開こうとしています。しかし、次の操作を試みると、
open('recentlyUpdated.yaml')
次のようなエラーが表示されます:
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
なぜですか? どうすれば問題を解決できますか?
ベストアンサー1
Python がファイルを見つける方法を明確にしましょう:
- アン絶対パス
C:\Python\scripts
たとえばWindows の場合、コンピュータのルート ディレクトリから始まるパスです。 - あ相対パスコンピュータのルートディレクトリから始まるパスではなく、作業ディレクトリ。
を実行しようとするとopen('recentlyUpdated.yaml')
、Python は相対パスが渡されていることを認識するため、現在の作業ディレクトリ内でファイルを検索します。
問題を診断するには:
- ファイルが存在すること(および正しいファイル拡張子を持っていること)を確認します。
os.listdir()
現在の作業ディレクトリ内のファイルのリストを表示します。 - 期待されるディレクトリにいることを確認するには、
os.getcwd()
(
IDE からコードを起動する場合は、別のディレクトリになる場合があります。)
その後、次のいずれかを実行できます。
- 電話
os.chdir(dir)
はdir
ファイルを含むディレクトリです。これにより、現在の作業ディレクトリが変更されます。次に、名前だけを使用してファイルを開きます (例: )open("file.txt")
。 - 呼び出し時にファイルへの絶対パスを指定します
open
。
ところで:
- 使う生の文字列(
r""
) パスにバックスラッシュが使用されている場合は、次のようになります。dir = r'C:\Python32'
- 生の文字列を使用しない場合は、すべてのバックスラッシュをエスケープする必要があります。
'C:\\User\\Bob\\...'
- スラッシュは Windows でも機能するため
'C:/Python32'
、エスケープする必要はありません。
- 生の文字列を使用しない場合は、すべてのバックスラッシュをエスケープする必要があります。
例: が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') # absolute path