Лекция 2. Файловый ввод-вывод
Файл — именованная область в долговременной памяти (на диске). Правила, определяющие допустимые имена файлов, зависят от используемой файловой системы.
Если имя файла включает как минимум один знак . , то часть имени от последнего знака . и до конца называется расширением. Как правило, расширение указывает тип содержимого файла: .jpg — картинка в формате JPEG, .txt — текстовый файл, .exe — исполнимый файл ОС Windows, .py — исходный текст на языке Python и т.д.
Часто интерфейс операционной системы скрывает расширения файлов, т.е. файлы с именами input.txt и program.py будут отображаться как input и program . Распространённая ошибка — забыть о том, что расширения скрываются и добавить «лишнее» расширение, создав, например, текстовый файл input.txt.txt — в папке он будет показываться как input.txt , т.к. расширение будет скрыто. Но при этом программа на Python не сможет найти файл input.txt , т.к. реально его в папке нет — есть файл с именем input.txt.txt .
Файловая система — способ хранения данных в долговременной памяти, использующий именованные файлы.
Папка (каталог, «директория») — именованная группа файлов. Как правило, файл находится только в одной папке. Некоторые файловые системы позволяют одному файлу находиться в нескольких папках одновременно, но это редкая и специфическая практика.
Папки тоже являются файлами (специального вида) и могут находиться внутри других папок. Если папка A находится внутри папки B , то папка B для папки A считается родительской. Корневая папка (корневой каталог) — папка, у которой нет родительской.
Путь к файлу — строка, описывающая расположение файла в файловой системе.
У запущенной программы одна из папок файловой системы является текущей — это своего рода неявная глобальная переменная.
Пути к файлам могут быть относительными и абсолютными. Относительный путь к файлу указывается, начиная с текущей папки, абсолютный путь к файлу — начиная с корневой папки.
В каждой папке (кроме корневой) неявно присутствуют две имени файла — ссылка на текущую папку (записывается как одинарная точка . ) и ссылка на родительскую папку (записывается как две точки: .. ). Они используются, чтобы в относительном пути ссылаться на текущую папку или на родительскую.
Путь к файлу включает в себя перечисление имён папок, в которые нужно перейти относительно текущей или корневой папки, чтобы добраться до файла плюс в конце само имя файла.
Если файл находится в текущей папке, то относительный путь к нему состоит из одного имени файла.
Правила записи пути к файлу зависят от операционной системы.
Особенности путей к файлам на Windows
На Windows компоненты пути разделяются знаками прямой / и обратной \ косой черты. Причём в интерфейсе (командная строка, элементы графического интерфейса) обратная косая черта \ работает всегда, прямая / не всегда (из соображений совместимости по историческим причинам).
Относительный путь к файлу — перечисление имён папок с именем целевого файла в конце, разделителем служат знаки / или \ . Текущих папок на Windows может быть несколько, у каждой буквы диска — своя текущая папка, поэтому относительный путь на Windows может начинаться с буквы диска и двоеточия.
Абсолютный путь к файлу начинается с разделителя папок (т.е. / или \ ), который может предваряться буквой диска. Если буква диска не указана, то подразумевается текущая буква диска.
Первые три примера — файл, который я сейчас пишу, а вы сейчас читаете.
Последние два примера означают переход в родительскую папку. Абсолютный путь для него выглядит как
(т.к. текущая папка — D:\Mazdaywik\Documents\Преподавание\L4 ).
В именах файлов на Windows запрещены знаки » , \ , / , < , > , : , * , ? . Некоторые имена файлов зарезрвированы — nul , prn , con , com1 , lpt1 , aux и ряд других — нельзя создать файл с этим именем и любым расширением (например, nul.txt , con.jpg , aux.py и т.д.)
Имена файлов не чувствительны к регистру — заглавные и строчные буквы считаются одинаковыми. Файл с именем штукатурка.txt можно открыть, используя имена
• Штукатурка.txt • ШТУКАТУРКА.TXT • ШтукаТурка.txt • штукаТУРКА.tXt • ШтУкАтУрКа.TxT
Особенности путей к файлам на unix-подобных ОС (Linux и macOS)
Здесь всё проще. Разделителем компонентов в пути является только знак / . Корень у файловой системы один, букв диска нету. Вместо этого для подключаемых устройств (например, флешек) создаются отдельные папки, внутри которых отображается содержимое устройства.
Примеры путей к файлам:
На Linux в именах файлов допустимы любые знаки, кроме знака / (т.к. он зарезервирован для разделителя путей), в отличие от Windows, зарезервированных имён нет (кроме . — ссылки на текущую папку и .. — ссылка на родительскую).
На Linux имена файлов учитывают регистр символов — большие и маленькие буквы считаются разными. Имена файлов hello.txt и HELLO.TXT — это имена двух разных файлов.
На macOS регистр имён файлов, как и на Windows, не учитывается.
Текстовый файл — файл, хранящий в себе последовательность текстовых строк. Строки в текстовом файле разделяются знаками перевода строки \n . Символы, содержащиеся в строках, представляются байтами или последовательностями байтов при помощи так называемых кодировок — наборов правил представления символов в виде байтов.
Однобайтовые кодировки (вроде Windows-1251 для кириллицы) представляют каждый символ в виде одного байта, поэтому поддерживают только небольшой набор символов (не более 256 включая управляющие символы). Например, кодировка Windows-1251 для кириллицы поддерживает только кириллические и латинские буквы, цифры, набор основных знаков пунктуации и математических знаков.
Многобайтные кодировки (UTF-8, UTF-16, UTF-32, некоторые кодировки для азиатских языков с иероглифами) сопоставляют одному символу несколько байтов, позволяют хранить гораздо больший набор символов. В частности, кодировка UTF-8 представляет все символы стандарта UNICODE, в частности, буквы алфавитов большинства языков (включая иероглифы, деванагари и прочее), разнообразные знаки пунктуации и математические знаки, эмодзи и т.д. В UTF-8 латинские буквы, цифры и основные знаки пунктуации кодируются 1 байтом, кириллические, греческие буквы, иврит и некоторые другие алфавиты — 2 байтами, иероглифы и эмодзи — 3 или 4 байта.
Python поддерживает работу с символами стандарта UNICODE.
Работа с файлами в Python
Для того, чтобы взаимодействовать с файлом, его нужно сначала открыть — создать объект файла, через который можно с ним взаимодействовать (читать или писать).
После работы с файлом, его нужно обязательно закрыть — сообщить операционной системе, что мы с ним больше не работаем.
Несколько программ могут одновременно открыть файл для чтения и читать его. Но если одна из программ открыла файл для записи, то другие программы, как правило, не могут этот файл открыть, как на чтение, так и на запись (детали поведения зависят от операционной системы).
На Windows, в частности, если файл открыт в программе, то его нельзя удалить — получим сообщение о том, что файл занят. Если открыт файл на флешке, то Windows не даст эту флешку безопасно извлечь.
Максимально число одновременно открытых файлов ограничено, количество зависит от настроек операционной системы (как-то я делал опыт, на Windows не удалось открыть более 4000 файлов одновременно).
Запись в файлы буферизуется — данные, которые записываются в файл, сначала записываются в область оперативной памяти, т.н. «буфер», когда «буфер» заполняется, выполняется реальна запись на диск. Буфер сбрасывается при закрытии файла.
По этим причинам файл нужно не забывать закрывать.
Открытие файлов
Файл открывается при помощи встроенной функции open() . Синтаксис:
- Первый параметр (обязательный) — путь к файлу (строка).
- Второй параметр — режим. Режим может быть
- r (read) — чтение текстового файла,
- w (write) — перезапись текстового файла,
- a (append) — дозапись в конец текстового файла,
- rb , wb , ab (binary) — чтение, перезапись или дозапись двоичного файла.
- Если режим файла не указан, то подразумевается r .
Файл закрывается при помощи вызова метода .close() . Python может сам закрывать файлы, но не всегда, поэтому .close() лучше вызывать явно.
Чтение файлов
Мы будем рассматривать только чтение текстовых файлов.
Для чтения файлов используются следующие методы:
- .read(count) — прочитать count символов из файла,
- .read() — прочитать всё содержимое файла от текущей позиции до конца,
- .readline() — прочитать очередную строку из файла,
- .readlines() — прочитать все строки из файла, функция возвращает список строк.
Строки, которые возвращают .readline() и .readlines() , завершаются символом перевода строки \n . Для того, чтобы эти символы стереть, можно использовать вызов метода .rstrip(‘\n’) , либо вообще .strip() , если нас не интересуют ни начальные, ни конечные пробельные символы.
Сам объект текстового файла, открытого на чтение, является итератором, который при переборе читает очередную строку (неявно вызывая .readline() ).
Пример функции, которая распечатывает содержимое файла с заданным именем.
Здесь мы не пользуемся методами для чтения файла, мы пользуемся тем, что объект файла является итератором — может быть прочитан в цикле for . Цикл будет перебирать все строки файла, как если бы они были прочитаны при помощи метода .readline() .
В конце прочитанных строк будет находиться знак перевода строки ( \n ), кроме, возможно, последней — она на знак \n может не завершаться. Поэтому для удаления \n на конце мы используем метод .rstrip(‘\n’) , указывая в качестве параметра удаляемый символ.
Альтернативное решение — вручную проверять, что если строка заканчивается на \n , то мы её обрезаем, иначе не трогаем. Обрезать последний символ без проверки нельзя, т.к. в последней строке знак перевода может отсутствовать.
Если знаки \n не обрезать, то на печать будут выводиться лишние пустые строки, т.к. print() при печати строки сам добавляет в конец знак \n .
Другой, более короткий способ прочитать всё содержимое файла — использовать метод .read() :
https://amdy.su/wp-admin/options-general.php?page=ad-inserter.php#tab-8Мы при помощи метода .read() читаем весь файл до конца, всё содержимое файла загружается в оперативную память в виде одной большой строки — эту строку распечатываем при помощи print() . Такое решение нормально работает только с небольшими файлами — файлами, размер которых измеряется не более чем мегабайтами. Для гигабайтных файлов так делать не надо — памяти может не хватить.
Запись файлов
Для того, чтобы записывать в файл, его нужно открыть в соответствующем режиме. Режимов записи два:
- Режим перезаписи файла — ‘w’ (от слова write). Если файл не существовал, то он при открытии будет создан и его размер будет равен нулю. Если файл уже существовал, то он будет перезаписан — всё его содержимое сотрётся, его размер станет равным 0 байт.
- Режим дозаписи в файл — ‘a’ (от слова append). Если файл не существовал, он будет создан и будет иметь размер 0 байт. Если файл уже существовал, то данные в нём останутся как есть, новая запись будет осуществляться в конец файла.
После этих манипуляций в файле example.txt будет записано только слово
т.к. мы открывали файл для перезаписи. После первого «сеанса» работы с файлом (вызовы open() , .write() и .close() ) в файле оказалось слово Один! . Когда мы открыли файл второй раз для перезаписи (в режиме ‘w’ ), всё содержимое файла стёрлось, и вместо него мы записали слово Два! .
Если мы файл удалим, а затем сделаем тоже самое, используя уже режим ‘a’ (дозапись):
то в файле example.txt у нас окажется
При первом открытии (несуществующего) файла файл будет создан пустым и в него будет записано Один! . При втором открытии содержимое файла не изменится, новая запись будет осуществляться в конец — в конце допишется Два! .
Метод .write()
Метод .write(s) принимает в качестве параметра строку и записывает её в файл. Возвращаемое значение — количество записанных символов. Обычно возвращаемое значение совпадает с длиной строки. Редко, если на диске закончилось доступное место, строка может записана не полностью и возвращаемое значение будет меньше длины. Обычно об этом не задумываются и возвращаемое значение не анализируют.
Нужно помнить, что метод .write() при записи строки в файл не добавляет в конце знак перевода строки ‘\n’ . Если формировать файл при помощи метода .write() , переводы строк нужно добавлять явно.
Функция print()
С функцией print() мы уже знакомы, мы ею пользовались для вывода данных на консоль. Однако, её можно использовать и для записи в файл.
Расширенный синтаксис функции print() :
Функция print() , помимо списка значений для записи, принимает несколько необязательных параметров. Это параметры:
- sep=‹разделитель полей› — строка, которая разделяет выводимые значения, по умолчанию — один пробел ‘ ‘ .
- end=‹разделитель строк› — строка, которая завершает вывод строки, по умолчанию — перевод строки ‘\n’ .
- file=‹объект файла› — открытый для записи (дозаписи или перезаписи) файл или устройство вывода, по умолчанию — вывод на консоль sys.stdout .
Таким образом, функция print() выводит значения, разделяя их пробелом, в конце выводимой строки печатает перевод строки, вывод осуществляется в консоль (т.е. на экран). Однако, это поведение можно изменить, указывая необязательные параметры.
Вывод по умолчанию:
Сделаем разделителем другие строки:
Выведем две строки, используя в качестве разделителя ‘!’ — перевод на новую строку осуществлён не будет:
В качестве разделителя полей укажем вместо пробела по умолчанию перевод строки — каждое значение будет распечатано на новой строчке.
Пример записи в файл при помощи функции print() :
Функция print() сначала напечатала строчку, потом шесть чисел, разделяя их пробелами (по умолчанию), затем шесть чисел, разделяя их запятой (явно указан sep=’,’ ). Содержимое файла:
Использование функции print() для вывода в файл удобнее, чем метод .write() .
Важность закрытия файлов, оператор with
Для примера создадим файл, запишем в него строку и пока не закроем:
Файл в папке появился, но он почему-то пустой. Размер отображается как 0 байт, если откроем блокнотом, то увидим пустой файл.
Причина в том, что данные при записи буферизуются — для открытого файла в оперативной памяти выделяется участок, куда помещаются данные, подлежащие записи. Когда эта область памяти заполняется, происходит запись данных на диск. Буфер необходим для ускорения работы программы, т.к. операция записи на диск гораздо более медленная, чем запись в оперативную память и имеет смысл её выполнять реже.
Если мы файл закроем, то содержимое буфера принудительно выпишется на диск.
После закрытия файла его размер уже не нулевой, и если откроем его блокнотом, то увидим ожидаемое содержимое — строку
Таким образом, файлы, открытые для записи, нужно обязательно закрывать, т.к. иначе есть риск потери данных. Если, например, интерпретатор Python’а будет аварийно завершён, данные в буфере на диск не выпишутся.
Другая причина закрытия файлов — на Windows открытые файлы блокируются операционной системой. Если мы откроем файл и попробуем его удалить:
то удалить его не удастся:
Если файл закрыть, то он успешно удалится:
На Linux и macOS удалять открытые файлы можно.
Третья причина — нельзя одновременно открыть очень много файлов. Для примера напишем функцию:
Эта функция открывает для записи указанное количество файлов, имена файлов при этом имеют вид file0.txt , file1.txt , …, функция возвращает список открытых файлов.
При попытке открыть 10 тысяч файлов получим следующее сообщение об ошибке:
Таким образом, в Windows по умолчанию нельзя открыть более 8188 файлов одновременно.
Python часто «прощает» незакрытые файлы — он их может закрыть сам. Но лучше на это не полагаться. Не забывать каждый раз вызывать метод .close() довольно утомительно, поэтому разработчики Python предусмотрели синтаксис, гарантирующий обязательное закрытие файла:
Здесь ‹параметры› — параметры функции open() : имя файла, режим, кодировка, ‹перем› — имя переменной, которой будет присвоен отрытый файл, ‹блок кода› — некоторый блок кода. Семантика этой конструкции следующая.
- Открывается файл,
- объект файла присваивается переменной ‹перем› ,
- выполняется ‹блок кода› .
- При завершении выполнения блока кода, причём любым способом — при достижении его конца, либо завершение функции при помощи return , либо, если конструкция with находится внутри цикла, то при прерывании итерации при помощи break или continue , либо при генерации исключения (возникновении ошибки) файл, присвоенный переменной ‹перем› обязательно автоматически закроется.
Пример. Подсчитаем число строк в файле.
Функция count_lines(filename) принимает имя файла и возвращает число строк в нём. Для открытия файла используется конструкция with , которая присваивает открытый функцией open() файл в переменную f . Чтобы подсчитать строки в файле, мы считываем все строки при помощи метода .readlines() и возвращаем длину полученного списка. Заметим, что блок кода, управляемый with , завершается при помощи return . Однако, файл будет закрыт, т.к. with это гарантирует.
Файловая структура — Основы командной строки
Файловая структура *nix-систем серьезно отличается от структуры в Windows и заслуживает отдельного внимания. В этом уроке мы подробнее познакомимся с этой темой.
Начнем с базовых понятий:
- Файловая структура представляет собой дерево
- В узлах этого дерева находятся директории — файлы специального типа
- В листьях дерева расположены файлы
Схематично такое дерево можно показать так:
Директории
Понятие «папка» в nix-системах не используется. Папки здесь называются *директориями** или каталогами, хотя по существу эти термины означают одно и то же.
В Windows файловая структура представлена не одним, а несколькими деревьями, так как каждая структура находится на своем диске. В *nix-системах немного по-другому: есть единственное дерево с корнем в / . Все устройства, физические и логические диски находятся внутри этого дерева в виде директорий и файлов.
Информация о любом файле или директории доступна по команде stat (сокращение от file system status):
В Windows мы привыкли, что имя файла может быть набрано в разных регистрах, и это всегда один и тот же файл. Другими словами, в Windows имена регистронезависимые.
В отличие от Windows, в *nix-системах регистр имеет значение. Файлы index.html , Index.html , INDEX.HTML и index.HTML — это разные файлы. Всегда обращайте внимание на регистр, потому что ошибиться довольно легко.
В этой ситуации macOS идет по пути Windows и тоже не учитывает регистр.
Говорят, что в nix «все является файлом». На нижнем уровне так и есть. *Директория** — это специальный файл, который содержит список файлов. Любое подключаемое устройство становится файлом или директорией, если это накопитель.
Такая концепция довольно удобна для разработчиков, потому что печать на принтер и вывод на экран между собой ничем не отличаются — с точки зрения кода, это просто запись в файл. На пользовательском уровне директория все же отличается от файла и имеет собственные команды для создания, удаления и модификации.
В nix-системах есть **FHS* — базовый стандартизированный набор каталогов. За каждым закреплена какая-то особая роль, например:
- Каталог /etc содержит конфигурацию программ в обычных текстовых файлах. В *unix-системах нет реестра, вся конфигурация лежит в обычных файлах
- Каталог /home содержит домашние директории пользователей системы, за исключением суперпользователя root , домашний каталог которого обычно находится по адресу /root
Обязательно пробегитесь по странице FHS в Википедии и посмотрите, за что отвечают разные каталоги.
Скрытые файлы
Не во все директории можно заходить, не все файлы можно читать или менять, и не все программы можно запускать. Так происходит, потому что в *nix-системах развитая система прав, завязанная на пользователей и группы. О ней мы поговорим отдельно позже. Сейчас достаточно знать, что такие ограничения есть. Их можно увидеть в выводе команды ls -l .
В отличие от Windows, в *nix-системах отсутствует понятие «расширение файла». Здесь точка считается полноправной частью имени файла. При этом файлы почти всегда именуются так же, как и в Windows — например, hello.mp3 . Важно понимать, что именем файла считается вся эта строчка. Нередко встречаются и такие имена: index.html.haml .
Есть еще одна существенная разница между Windows и *unix-системами. В обоих случаях скрытые файлы есть, но работают они по-разному:
- В Windows видимость файла — это его свойство, которое можно включить или выключить в настройках (при выключении файл станет скрытым)
- В *nix-системах файл считается скрытым, если его имя начинается с точки. Чтобы скрыть файл, ничего не нужно делать в настройках — достаточно просто добавить точку в начале
Вывести все файлы, включая скрытые, можно командой ls -a :
Обратите внимание на две особые директории:
- Обозначенные точкой ( . ) — это текущая директория
- Обозначенные двумя точками ( .. ) — это директория верхнего уровня
Именно благодаря этой схеме работает команда cd .. , которая перемещает нас на уровень выше.
Кроме обычных файлов, в *nix-системах существует ряд других:
- Hard Link — дополнительное имя для уже существующего файла
- Symbolic link — символическая ссылка. Такой файл похож на ярлык в Windows. Если удалить основной файл, то символическая ссылка будет вести в никуда
- Socket — специальный файл, через который происходит взаимодействие между разными процессами операционной системы. Программисты постоянно сталкиваются с сокетами в реальной жизни
Это наиболее важные на начальном этапе знакомства с файловой системой типы файлов. Есть еще и другие типы, но не будем сейчас заострять на них внимание.
Директория — это.. Создание директорий. Файловая система
Достаточно часто многие пользователи сталкиваются с понятием директории. Некоторые, услышав вопрос: «Директория – это что такое?», недоуменно пожимают плечами, хотя каждый человек, работающий с компьютером, сталкивается с этим каждый день. Но давайте рассмотрим суть вопроса несколько подробнее.
Компьютерная терминология: директория — это…
Вообще, само слово «директория» имеет достаточно много значений. Но, поскольку в данном случае речь идет именно о компьютерных системах и технологиях, будем отталкиваться именно от этого направления.
Итак, в компьютерном мире значение слова «директория» известно всем и каждому, а само понятие трактуется как «каталог» или «папка». Иными словами, это одна из фундаментальных составляющих файловой системы. Проще говоря, это элемент системы упорядочивания файлов.
Файловая система и принципы упорядочивания файлов
Папка, директория или каталог – понятия достаточно условные. Дело в том, что физически на жестком диске или любом съемном носителе такой элемент не присутствует, в отличие даже от файла с нулевым размером. Таким образом, директория – это элемент, если можно так выразиться, виртуальный. Собственного места на диске папка, в которой отсутствуют файлы, не занимает абсолютно никакого. Если же в ней что-то есть, виртуальный объем занимаемой дисковой памяти полностью совпадает с суммарным размером всех объектов, находящихся внутри нее. Но за существование директории отвечает специальный файл без расширения, в котором хранится информация об объектах, их количестве, дате создания или изменения, размере и т. д.
Другое дело, что введение в обиход такого элемента позволило упорядочить файлы по некоторым признакам. Иными словами, папка как файловая система позволяет группировать любое количество файлов.
В реальной жизни можно провести аналогичное сравнение. По сути, директория – это некий виртуальный ящик, в который пользователь складывает нужные ему вещи (в данном случае – файлы). Вот и получается, что документы не разбросаны по всему винчестеру (хотя физически так оно и есть), а находятся в строго определенных местах. Такое четкое упорядочивание в считанные минуты позволяет найти нужный объект. Само собой разумеется, что папки имеют свои названия.
Самый простой пример – стандартная директория «Мои документы». Понятно, что пользователь собственные файлы будет искать именно здесь, поскольку, как правило, в другое место для удобства их и не помещает. Кроме того, Windows-системы, например, изначально предлагают пользователю специализированные каталоги для хранения информации определенного типа («Моя музыка», «Мои видеозаписи» и т. д.). Естественно, их использование обязательным не является. С другой стороны, если пользоваться именно ими, всегда будешь точно знать, где и что находится.
Просмотр папок в файловых менеджерах
Сами папки, кроме того что могут содержать неограниченное количество файлов, могут включать в себя еще и подпапки, вложенные по типу матрешки. Получается этакая иерархическая структура, которую принято называть при отображении древовидной.
В самом простом примере можно рассмотреть стандартный «Проводник», хотя в других подобных программах вид папок может существенно отличаться. Взять тот же Windows Commander. Но сейчас не об этом.
Собственно, здесь можно изменять варианты отображения папок (и файлов), к примеру, просматривать их в виде списка, таблицы с дополнительными параметрами, плитки или крупных значков. Кроме того, для любой папки может быть изменена иконка, если просмотр осуществляется не по типу списка или таблицы.
Это еще больше упрощает дело. Допустим, пользователь для папки «Музыка» устанавливает иконку с музыкальными нотами. Даже не обращая внимания на название, он сразу же видит, что это именно музыка, а не что-то другое.
Еще один плюс состоит в том, что при отображении папок с вложенными подпапками в виде крупных значков каталог может отображаться в виде частично раскрытой книги, у которой вместо страниц будут присутствовать скриншоты (если это графика и видео) или даже макеты страниц файлов во вложенных директориях.
Отображение скрытых объектов
Само собой разумеется, что некоторые папки являются скрытыми от глаз пользователя, особенно системные каталоги. По умолчанию в Windows это сделано из соображений безопасности. Дабы юзер не удалил важные файлы, отвечающие за функционирование системы.
Чтобы просмотреть такие объекты, достаточно использовать меню вида, где должен быть задействован параметр отображения скрытых файлов и папок.
Простейшие операции с папками
Собственно, с директориями можно производить практически все действия, относящиеся к файлам, за исключением редактирования в обычном понимании. Их можно копировать, удалять, перемещать, переименовывать, создавать иконки и т. д.
Создание директорий тоже сложности не представляет. Например, в том же «Проводнике» достаточно кликнуть правой кнопкой мыши на пустой области рабочей зоны и вызвать соответствующую команду. После этого будет создан новый каталог с названием «Новая папка» по умолчанию. Естественно, это не единственный способ. Можно использовать команды основного меню, специальные кнопки панели или стандартное сочетание Ctrl + Shift + N. А вообще, для разных файловых менеджеров существуют свои методы.
Директории сайтов
С понятием «директория сайта» ситуация несколько сложнее, хотя принцип понимания самой сути практически тот же. Дело в том, что в данном случае под директорией подразумевается корневой каталог, в котором будут храниться все элементы создаваемого или уже созданного веб-сайта, например на языке HTML.
Прежде всего, в корневом каталоге в обязательном порядке должен находиться файл Index.html (главная страница), туда же загружаются папки Content (для страниц) и Images (для картинок). Впрочем, необязательно использовать именно такие названия. Их можно обозначить как угодно – допустим, давать наименования по рубрикам, в которые будут помещаться материалы по определенной тематике. Правда, это увеличит сам корневой каталог, зато в некоторых случаях именно за счет этого можно добиться сокращения пути к самим страницам.
Заключение
Как видно из всего вышеизложенного, директория – это своего рода контейнер или, если хотите, ящик, в который помещается необходимое содержимое. И именно директория является одним из фундаментальных элементов, позволяющих четко упорядочить файловую структуру.
Что такое директория?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?Что такое IIS и что такое PWS? Почему одно без другого не работает?
вот уже второй день пытаюсь немного разобраться в АСП. накидал небольшую тестовую страничку. но с.Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?Что такое напряжение и что такое сила тока с позиции заряженных частиц
Объясните пожалуйста, что такое напряжение и что такое сила тока с позиции заряженных частиц.