open() gives FileNotFoundError / IOError: '[Errno 2] No such file or directory'
open() выдает FileNotFoundError / IOError: '[Ошибка 2] Такого файла или каталога нет'
Я пытаюсь открыть файл recentlyUpdated.yaml из моего скрипта на Python. Но когда я пытаюсь использовать:
open('recentlyUpdated.yaml')
Я получаю сообщение об ошибке, которое гласит:
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
Почему? Как я могу решить проблему?
Переведено автоматически
Ответ 1
Убедитесь, что файл существует (и имеет правильное расширение файла): используйте os.listdir(), чтобы просмотреть список файлов в текущем рабочем каталоге.
Убедитесь, что вы находитесь в ожидаемом каталоге, используя os.getcwd(). (Если вы запускаете свой код из IDE, вы можете находиться в другом каталоге.)
Затем вы можете либо:
Вызовите, os.chdir(dir) где dir - каталог, содержащий файл. Затем откройте файл, используя только его имя, например, open("file.txt").
Укажите абсолютный путь к файлу в вашем open вызове.
Используйте необработанную строку (r""), если ваш путь использует обратную косую черту, например: dir = r'C:\Python32'
Если вы не используете необработанную строку, вам придется экранировать каждую обратную косую черту: 'C:\\User\\Bob\\...'
Косые черты также работают в Windows 'C:/Python32' и их не нужно экранировать.
Позвольте мне пояснить, как Python находит файлы:
Абсолютный путь - это путь, который начинается с корневого каталога вашего компьютера, например, C:\Python\scripts если вы используете Windows.
Относительный путь - это путь, который не начинается с корневого каталога вашего компьютера, а вместо этого относится к чему-то, называемому рабочим каталогом. Вы можете просмотреть текущий рабочий каталог Python, вызвав os.getcwd().
Если вы попытаетесь это сделать 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
Распространенное заблуждение, что относительные пути относятся к местоположению скрипта python, но это неправда. Относительные пути к файлам всегда указаны относительно текущего рабочего каталога, и текущий рабочий каталог не обязательно должен быть местоположением вашего скрипта python.
У вас есть три варианта:
Используйте абсолютный путь для открытия файла:
file = open(r'C:\path\to\your\file.yaml')
Сгенерируйте путь к файлу относительно вашего скрипта на python:
Забываем, что Windows не отображает расширения файлов:
Поскольку Windows не отображает известные расширения файлов, иногда, когда вы думаете, что у вашего файла есть имя file.yaml, на самом деле оно есть file.yaml.yaml. Дважды проверьте расширение вашего файла.
Ответ 3
Файл может существовать, но может иметь другой путь. Попробуйте записать абсолютный путь к файлу.
Попробуйте os.listdir() функцию, чтобы проверить, что по крайней мере python видит файл.
Попробуйте сделать это следующим образом:
file1 = open(r'Drive:\Dir\recentlyUpdated.yaml')
Ответ 4
Возможно, вы закрыли 'file1'. Просто используйте флаг 'w', чтобы создать новый файл:
file1 = open('recentlyUpdated.yaml', 'w')
mode - необязательная строка, указывающая режим, в котором открыт файл . По умолчанию используется значение 'r', что означает "открыт для чтения в текстовом режиме" режим. Другими распространенными значениями являются 'w' для записи (усечение файла, если он уже существует)...