何らかの理由で、私のコードは単純なファイルを開くことができません。
これはコードです:
file1 = open('recentlyUpdated.yaml')
エラーは次のとおりです。
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
open()
にファイルへのフルパスを指定して、ファイル内を移動しようとしましたが、いずれも機能していないようです。os.listdir()
を使用して、現在の作業ディレクトリ内のファイルのリストを表示しますos.getcwd()
を使用していると思われるディレクトリにいることを確認してください(IDEからコードを起動する場合、別のディレクトリにいる可能性があります)os.chdir(dir)
、dir
を呼び出して、ファイルが置かれているフォルダーを指定し、実行中のように名前だけでファイルを開きます。open
呼び出しでファイルへの絶対パスを指定します。dir = r'C:\Python32'
のように生の文字列を使用することを忘れないでください'C:\\User\\Bob\\...'
'C:/Python32'
でも機能し、エスケープする必要はありません。Pythonがファイルを見つける方法を明確にしましょう:
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
ファイルは存在していても、パスが異なる場合があります。ファイルの絶対パスを書いてみてください。
os.listdir()
関数を試して、少なくともpythonがファイルを参照していることを確認してください。
このようにしてみてください:
file1 = open(r'Drive:\Dir\recentlyUpdated.yaml')
ほとんどの場合、問題は 相対ファイルパス を使用してファイルを開きますが、 現在の作業ディレクトリ があなたが思っている通りに設定されていないことです。
相対パスはpythonスクリプトの場所に相対的であるという一般的な誤解ですが、これは正しくありません。相対ファイルパスは常に現在の作業ディレクトリに相対的であり、現在の作業ディレクトリはpythonスクリプトの場所である必要はありません。
次の3つのオプションがあります。
絶対パスを使用してファイルを開きます:
file = open(r'C:\path\to\your\file.yaml')
pythonスクリプトに関連するファイルへのパスを生成します:
from pathlib import Path
script_location = Path(__file__).absolute().parent
file_location = script_location / 'file.yaml'
file = file_location.open()
ファイルを開く前に現在の作業ディレクトリを変更します:
import os
os.chdir(r'C:\path\to\your\file')
file = open('file.yaml')
「ファイルが見つかりません」というエラーを引き起こす可能性のある他の一般的な間違いには次のものがあります。
ファイルパスで誤ってエスケープシーケンスを使用する:
path = 'C:\Users\newton\file.yaml'
# Incorrect! The '\n' in 'Users\newton' is a line break character!
この間違いを避けるため、ファイルパスには raw string literals を使用することを忘れないでください。
path = r'C:\Users\newton\file.yaml'
# Correct!
(参照: PythonのWindowsパス )
Windowsがファイル拡張子を表示しないことを忘れる:
Windowsには既知のファイル拡張子が表示されないため、ファイルの名前がfile.yaml
と思われる場合、実際にはfile.yaml.yaml
という名前になります。ファイルの拡張子を再確認してください。
おそらく、「file1」を閉じました。
「w」フラグを使用するだけで、新しいファイルが作成されます。
file1 = open('recentlyUpdated.yaml', 'w')
modeは、ファイルを開くモードを指定するオプションの文字列です。デフォルトは 'r'です。これは、テキストモードで読み取り用に開くことを意味します。他の一般的な値は、書き込み用の 'w'です(ファイルが既に存在する場合は切り捨てます)...
( https://docs.python.org/3/library/functions.html?highlight=open#open も参照してください)