Файл или каталог не существует

Обновлено: 03.07.2024

Это ошибка, которую я получаю:
Моя ошибка

Вот мой код, где происходит ошибка. Если вам что-то понадобится, я с удовольствием обновлю свой вопрос или предоставлю соответствующую информацию. Спасибо всем, кто помогает

Я пытаюсь использовать текущую дату как имя файла, но кажется, что это невозможно, или я делаю что-то неправильно. Раньше я использовал переменную как имя для файла, но это, похоже, не работает.

Вот что я пробовал:

Это просто посмотреть, создает ли файл. Как вы можете видеть, я пытался с a+ потому что я читал, что создает файл, если он не существует, и я все равно получаю ту же ошибку.

2 ответа

3 Решение mhlester [2014-02-26 22:33:00]

Проблема заключается в том, как вы используете дату:

Вы не можете иметь / в имени файла, потому что это каталог. Вы еще не создали каталог. Вместо этого попробуйте использовать дефисы:

Вы почти наверняка не хотите создавать каталоги в структуре день/месяц/год, поэтому я предполагаю, что не то, что вы намеревались.

Вы включаете разделители каталогов ( / ) в свое имя файла, и эти каталоги не создаются для вас при попытке открыть файл. Там либо нет 26/ директории или нет 26/02/ каталога в текущем рабочем пути.

Вам придется либо создавать эти каталоги другими способами, либо если вы не имели в виду, что день и месяц должны быть каталогами, измените ваши косые черты на другой разделительный символ:

Что делать? Как я могу получить доступ к содержимому zip-файла?

2 ответа

Вероятно, что filename.zip либо не является файлом .zip , либо поврежден.

Откройте терминал . Вы можете получить к нему доступ, набрав «Терминал» в Spotlight .

Введите команды (ов) в соответствии с приведенными ниже инструкциями в командной строке (три раза щелкните по строке, скопируйте ее и вставьте в приглашение). Замените filename.zip на фактическое имя файла zip .

Если имя файла содержит пробелы, вам нужно ввести его по-другому, используя символ escape . Например, если файл называется compressed crap.zip , вы должны ввести compressed crap.zip в командной строке.

Шаг 1:

Восстановить права доступа к диску. После этого попытайтесь снова открыть ZIP-файл. Если вы хотите, вы можете сделать это из командной строки.

Шаг 2:

Используйте файл , чтобы подтвердить, что это на самом деле zip-файл:

Выход должен быть: Zip archive data, at least v2.0 to extract

Шаг 3:

После подтверждения, что это фактически zip-файл, попробуйте разархивировать прямо из командной строки:

Шаг 4:

Шаг 3, скорее всего, не удастся. Запустите команду zip , чтобы попытаться восстановить повреждение и сохранить содержимое архива (опять же, замените filename.zip на actualname.zip ):

В качестве альтернативы, он может не выйти чисто. Если вам представлена ​​

Is this a single-disk archive? (y/n):

Нажмите клавишу y . После того, как вы вернетесь в приглашение, снова попытайтесь открыть Repairedversion.zip из папки «Загрузки». Если вы все еще не можете его открыть, прокомментируйте это ниже с предупреждением (-ами), полученным от команды. Если вы достигли этого, однако, вероятно, что файл непоправимо поврежден.

Часто при написании сценариев оболочки вы можете оказаться в ситуации, когда вам нужно выполнить действие в зависимости от того, существует файл или нет.

В Bash вы можете использовать команду test, чтобы проверить, существует ли файл, и определить тип файла.

Команда test принимает одну из следующих синтаксических форм:

Если вы хотите, чтобы ваш сценарий был переносимым, вам следует предпочесть старую команду test [ , которая доступна во всех оболочках POSIX. Новая обновленная версия тестовой команды [[ (двойные скобки) поддерживается в большинстве современных систем, использующих Bash, Zsh и Ksh в качестве оболочки по умолчанию.

Проверьте, существует ли файл

При проверке существования файла наиболее часто используются операторы FILE -e и -f . Первый проверит, существует ли файл независимо от типа, а второй вернет истину, только если ФАЙЛ является обычным файлом (а не каталогом или устройством).

Если вы хотите выполнить другое действие в зависимости от того, существует файл или нет, просто используйте конструкцию if / then:

Всегда используйте двойные кавычки, чтобы избежать проблем при работе с файлами, в именах которых есть пробелы.

Если вы хотите запустить серию команд после оператора && просто заключите команды в фигурные скобки, разделенные ; или && :

Напротив && , оператор после || Оператор будет выполняться только в том случае, если статус выхода тестовой команды false .

Проверить, существует ли каталог

Операторы -d позволяют вам проверить, является ли файл каталогом или нет.

Например, чтобы проверить, существует ли каталог /etc/docker вы должны использовать:

Вы также можете использовать двойные скобки [[ вместо одинарной [ .

Проверьте, не существует ли файла

Как и во многих других языках, тестовое выражение может быть отменено с помощью ! (восклицательный знак) оператор логического НЕ:

То же, что и выше:

Проверьте, существует ли несколько файлов

Вместо использования сложных вложенных конструкций if / else вы можете использовать -a (или && с [[ ), чтобы проверить, существует ли несколько файлов:

Эквивалентные варианты без использования оператора IF:

Операторы проверки файлов

Команда test включает в себя следующие операторы FILE, которые позволяют проверять файлы определенных типов:

Выводы

В этом руководстве мы показали вам, как проверить, существует ли файл или каталог в Bash.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Как проверить наличие файла или каталога в R, Python и Bash?

Для этого примера мы создали файл myfile.txt и каталог my_test_folder .

Как проверить наличие файла?

Наличие файла легко проверить с помощью команды file.exists() из базового пакета. Посмотрите следующий пример:

Попробуем теперь с файлом, которого не существует:

Обратите внимание, что выражение if not file exists записывается также и с добавлением ! внутри оператора if вот таким образом:

Кроме того, при необходимости создать пустой файл выполняется такая команда:

Как проверить наличие каталога?

По аналогии с проверкой наличия файла, при которой используется file.exists() , наличие каталогов проверяется с помощью команды dir.exists() . Например:

Теперь выполним следующее упражнение. Проверим, есть ли каталог. Если его нет, создадим новый:

Папка my_new_folder создается в нашем рабочем каталоге.

Проверка наличия файла или каталога в Python

Для этого примера опять же используем файл myfile.txt и каталог my_test_folder .

Как проверить наличие файла?

Здесь мы будем работать с модулем os :

Кроме того, здесь задействуется модуль pathlib :

В Python есть возможность создать пустой файл с помощью команды with open(filename.txt, 'w') . Например:

При открытии файла помните о следующих режимах:

Как проверить наличие каталога?

Это, опять же, аналогично проверке наличия файла:

Каталог создается следующим образом:

Чтобы проверить, существует ли объект Path независимо или является файлом/каталогом, используется exists() :

Или с помощью модуля os :

Проверка наличия файла или каталога в Bash

Как проверить наличие файла?

Для этого примера снова используем файл myfile.txt и каталог my_test_folder . Здесь мы будем работать с флагом -f , с помощью которого проверяется наличие обычного файла, а не каталога.

Задействуем скрипт mycheck.sh , который выглядит следующим образом:


Как и ожидалось, файл существует. Теперь при необходимости создать пустой скрипт выполняется такая команда:

Как проверить наличие каталога?

Здесь используем флаг -d . Задействуем скрипт dircheck.sh :


Обратите внимание, что для создания каталога выполняется следующая команда:

Отметим также, что выражение if not содержит символ ! :

И в завершение приведем перечень необходимых флагов для проверки файлов и каталогов в Bash:

Favorite

Добавить в избранное

Главное меню » Язык программирования Python » Как проверить, существует ли файл или каталог в Python

(1 оценок, среднее: 5,00 из 5)

Как проверить, существует ли файл или каталог в Python

П ри написании скриптов Python вы можете захотеть выполнить определенное действие, только если файл или каталог существует или нет. Например, вы можете захотеть прочитать или записать данные в файл конфигурации или создать файл, только если он уже не существует.

В Python есть много разных способов проверить, существует ли файл и определить тип файла.

В этой статье мы покажем вам три различных метода проверки наличия файла.

Проверьте, существует ли файл

Самый простой способ проверить, существует ли файл, состоит в том, чтобы попытаться открыть файл. Этот подход не требует импорта какого-либо модуля и работает с Python 2 и 3. Используйте этот метод, если вы хотите открыть файл и выполнить какое-либо действие.

В следующем фрагменте мы используем простой блок try-except. Мы пытаемся открыть файл, filename.txt и если файл не существует, он выдаст исключение и выведет «Файл недоступен».

Если вы используете Python 3, вы также можете использовать FileNotFoundError вместо IOError.

При открытии файлов рекомендуется использовать ключевое слово with, обеспечивающее правильное закрытие файла после завершения файловых операций, даже если во время операции возникает исключение. Кроме того, это сделает ваш код короче, потому что вам не нужно закрывать файл с помощью функции close.

Следующий код эквивалентен предыдущему примеру:

В приведенных выше примерах мы использовали блок try-except и открывали файл, чтобы избежать условия цикла. Условия цикла возникают, когда у вас есть несколько процессов, обращающихся к одному и тому же файлу.

Например, если вы проверите существование файла, другой процесс может создать, удалить или заблокировать файл в промежутке времени между проверкой и открытием файла. Это может привести к поломке вашего кода.

Проверьте, существует ли файл с помощью модуля os.path

Модуль os.path предоставляет некоторые полезные функции для работы с путевыми именами. Модуль доступен для Python 2 и 3.

В контексте этой статьи наиболее важными функциями являются:

Следующий код проверит, существует ли файл filename.txt:

Используйте этот метод, если вы хотите проверить, существует ли файл или нет. Если вы хотите выполнить действие с файлом, используйте предыдущий метод.

Проверьте, существует ли файл, используя модуль pathlib

Модуль pathlib доступен в Python 3.4 и выше. Этот модуль предоставляет объектно-ориентированный интерфейс для работы с путями файловой системы для разных операционных систем.

Как и в предыдущем примере, следующий код проверит, существует ли файл filename.txt:

is_file возвращает true, если path это обычный файл или символическая ссылка на файл. Если вы хотите проверить каталог, используйте метод is_dir.

Основное различие между pathlib и os.path заключается в том, что pathlib вы можете работать с путями в виде объектов Path с соответствующими методами и атрибутами вместо обычных объектов str.

Если вы хотите использовать этот модуль в Python 2, вы можете установить его с помощью pip :

Заключение

В этой статье мы показали, как проверить, существует ли файл или каталог с использованием Python.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: