Источник: Nuances of Programming
Проверка наличия файла или каталога в R
Для этого примера мы создали файл myfile.txt и каталог my_test_folder.
Как проверить наличие файла?
Наличие файла легко проверить с помощью команды file.exists() из базового пакета. Посмотрите следующий пример:
И мы получаем:
[1] "The file exists"
Попробуем теперь с файлом, которого не существует:
Здесь получаем:
[1] "The file does not exist"
Обратите внимание, что выражение if not file exists записывается также и с добавлением ! внутри оператора if вот таким образом:
if (!file.exists("myfile.txt"))
Кроме того, при необходимости создать пустой файл выполняется такая команда:
file.create("mynewfile.txt")
Как проверить наличие каталога?
По аналогии с проверкой наличия файла, при которой используется file.exists(), наличие каталогов проверяется с помощью команды dir.exists(). Например:
И мы получаем:
[1] "The directory exists"
Теперь выполним следующее упражнение. Проверим, есть ли каталог. Если его нет, создадим новый:
Папка my_new_folder создается в нашем рабочем каталоге.
Проверка наличия файла или каталога в Python
Для этого примера опять же используем файл myfile.txt и каталог my_test_folder.
Как проверить наличие файла?
Здесь мы будем работать с модулем os:
import os.pathif os.path.isfile('myfile.txt'):
print("The file exists")
else:
print("The file does not exist")
Кроме того, здесь задействуется модуль pathlib:
from pathlib import Path
my_file = Path("myfile.txt")
if my_file.is_file():
print("The file exists")
else:
print("The file does not exist")
В Python есть возможность создать пустой файл с помощью команды with open(filename.txt, 'w'). Например:
import osif not os.path.isfile('myfile.txt'):
with open('myfile.txt', 'w'): pass
Или:
if not os.path.isfile('myfile.txt'):
file_name = 'myfile2.txt' f = open(file_name, 'w')
f.close()
При открытии файла помните о следующих режимах:
w режим записи
r режим чтения
a режим добавления
w+ файл создается, если его нет, и открывается в режиме (пере-)записи
[если файл уже существует, он перезаписывается]
r+ существующий файл открывается в режиме чтения и записи
a+ файл создается, если его нет, и открывается в режиме добавления
Как проверить наличие каталога?
Это, опять же, аналогично проверке наличия файла:
import os.pathif os.path.isdir('my_test_folder'):
print("The directory exists")
else:
print("The directory does not exist")
И мы получаем:
The directory exists
Каталог создается следующим образом:
import os
if not os.path.isdir('my_folder'):
os.makedirs('my_folder')
Чтобы проверить, существует ли объект Path независимо или является файлом/каталогом, используется exists():
from pathlib import Pathmy_file = Path("/path/to/file")
if my_file.exists():
# path существует
Или с помощью модуля os:
import os.pathpath.exists("myfile.txt")
Проверка наличия файла или каталога в Bash
Как проверить наличие файла?
Для этого примера снова используем файл myfile.txt и каталог my_test_folder. Здесь мы будем работать с флагом -f, с помощью которого проверяется наличие обычного файла, а не каталога.
Задействуем скрипт mycheck.sh, который выглядит следующим образом:
Как и ожидалось, файл существует. Теперь при необходимости создать пустой скрипт выполняется такая команда:
touch filename.txt
Как проверить наличие каталога?
Здесь используем флаг -d. Задействуем скрипт dircheck.sh:
if [ -d my_test_folder ]
then echo "The directory exists" else
echo "The directory does not exist" fi
Мы получили сообщение о том, что каталог существует.
Обратите внимание, что для создания каталога выполняется следующая команда:
mkdir yourdirectory
Отметим также, что выражение if not содержит символ !:
if [ ! -d my_test_folder ]
И в завершение приведем перечень необходимых флагов для проверки файлов и каталогов в Bash:
- -b filename — блочный файл устройств.
- -c filename — символьный файл устройств.
- -d directoryname — проверка наличия каталога.
- -e filename — проверка наличия файла независимо от типа (узел, каталог, сокет и т. д.).
- -f filename — проверка наличия обычного файла, а не каталога.
- -G filename — проверка, существует ли файл и принадлежит ли он эффективному идентификатору группы.
- -G filename set-group-id — True, если файл существует и у него set-group-id (установка идентификатора группы во время выполнения).
- -k filename — дополнительный атрибут и специальный тип разрешений файла/каталога Sticky bit.
- -L filename — символическая ссылка.
- -O filename — True, если файл существует и принадлежит эффективному идентификатору пользователя.
- -r filename — проверка, доступен ли файл для чтения.
- -S filename — проверка, является ли файл сокетом.
- -s filename — проверка ненулевого размера файла.
- -u filename — проверка, установлен ли для файла бит set-user-id (установка идентификатора пользователя во время выполнения).
- -w filename — проверка, доступен ли файл для записи.
- -x filename — проверка, является ли файл исполняемым.
Читайте также:
Перевод статьи George Pipis: How To Check if a File or Directory Exists in R, Python, and Bash