Назовите правильную запись имени текстового файла
Обновлено: 21.11.2024
На этапе ввода текстового файла считываются данные из различных типов текстовых файлов, включая форматы, созданные электронными таблицами, и плоские файлы фиксированной ширины. Особенности шага позволяют вам читать из списка файлов или каталогов, использовать подстановочные знаки в виде регулярных выражений и принимать обобщенные имена файлов из предыдущих шагов.
Соображения об AEL
При использовании шага ввода текстового файла с Adaptive Execution Layer (AEL) на производительность и результаты влияет следующий фактор:
-
Spark обрабатывает нулевые значения не так, как движок Pentaho. Вам нужно будет настроить преобразование для успешной обработки нулевых значений в соответствии с правилами обработки Spark.
Если вы используете этот шаг для извлечения данных из Amazon Simple Storage Service (S3), перейдите к URI системы S3 или укажите параметр поля Uri на вкладке «Дополнительные поля вывода». Поддерживаются S3 и S3n.
Общие
Введите следующую информацию в поле имени шага преобразования:
- Имя шага: укажите уникальное имя шага ввода текстового файла на холсте. Вы можете изменить имя или оставить его по умолчанию.
Вы можете использовать строки предварительного просмотра для отображения строк, созданных на этом шаге. Шаг ввода текстового файла определяет, какие строки вводить, на основе информации, которую вы предоставляете на вкладках параметров. Эта функция предварительного просмотра помогает вам решить, точно ли предоставленная информация моделирует строки, которые вы пытаетесь получить.
Параметры
На этапе ввода текстового файла есть несколько вкладок с полями. Каждая вкладка описана ниже.
Вкладка "Файл"
Используйте вкладку "Файл", чтобы ввести следующую информацию о соединении для вашего источника.
Опция | Описание |
---|---|
Файл или каталог | Укажите расположение источника, если источник не определен в поле. Щелкните Обзор, чтобы перейти к исходному файлу или каталогу. Нажмите «Добавить», чтобы включить источник в таблицу «Выбранные файлы». Если исходное местоположение определено в поле, см. раздел «Принять имена файлов из предыдущего шага», чтобы указать имя файла. |
Регулярное выражение | Укажите регулярное выражение для соответствия именам файлов в указанном каталоге. |
Исключить регулярное выражение | Укажите регулярное выражение для исключения имен файлов в указанном каталоге. |
Регулярные выражения
Используйте поле «Подстановочный знак» (RegExp) или «Исключить подстановочный знак» на вкладке «Файл» для поиска файлов по подстановочному знаку в виде регулярного выражения. Регулярные выражения более сложны, чем использование '*' и '? подстановочные знаки.
Следующие выражения являются примерами таких типов поиска:
Имя файла | Регулярное выражение | Выбранные файлы |
---|---|---|
/dirA/ | .userdata.\.txt | Найти все файлы в каталоге /dirA/, имена которых содержат данные пользователя и заканчиваются на .txt |
AAA.\* | Найти все файлы в /dirB/ с именами, начинающимися с AAA | |
/dirC/ | \[ENG:AZ\]\[ENG:0-9\].\* | Найти все файлы в каталоге /dirC/, имена которых начинаются с заглавной буквы и следуют по цифре (A0-Z9) |
Таблица выбранных файлов
В таблице «Выбранные файлы» показаны файлы или каталоги, которые можно использовать в качестве исходных местоположений для ввода. Эта таблица заполняется нажатием кнопки «Добавить» после указания файла или каталога. Шаг ввода текстового файла пытается подключиться к указанному файлу или каталогу, когда вы нажимаете кнопку «Добавить», чтобы включить его в таблицу.
Таблица содержит следующие столбцы:
Столбец | Описание |
---|---|
Файл/Каталог | Исходное расположение, указанное нажатием кнопки "Добавить" после указания его в Файле или каталоге. |
Подстановочный знак (RegExp) | Укажите регулярное выражение для сопоставления имен файлов в указанном каталоге. Примеры синтаксиса см. в разделе Регулярные выражения. |
Исключить подстановочный знак | Укажите регулярное выражение для исключения имен файлов в указанном каталоге. Примеры синтаксиса см. в разделе «Регулярные выражения». |
Обязательно | Требуемое исходное местоположение для ввода.< /td> |
Включить вложенные папки | Включаются ли вложенные папки в исходное местоположение. | < /tr>
Нажмите «Удалить», чтобы удалить источник из таблицы. Нажмите «Изменить», чтобы удалить источник из таблицы и вернуть его обратно в параметр «Файл или каталог».
Принять имена файлов из предыдущего шага
Вы можете указать имя файла и передать его на этапе ввода текстового файла, что позволяет использовать имя файла из любого источника, например текстового файла или таблицы базы данных.
Опция | Описание |
---|---|
Принять имена файлов из предыдущего шага | Выберите, чтобы получить имена файлов из предыдущих шагов. |
Пропустить поля из предыдущего шага | Выберите, чтобы получить информацию о полях из предыдущих шагов. |
Шаг для считывания имен файлов | Введите имя шага, из которого считываются имена файлов. td> |
Поле ввода для использования в качестве имени файла | Введите имя поля ввода шаг, чтобы определить, какое имя файла использовать. |
Отображать подключенные файлы
После ввода информации в поля вкладки "Файл" выберите кнопку действия, если хотите просмотреть имена исходных файлов или содержимое данных.
Кнопка | Описание |
---|---|
Показать имена файлов. | Выберите для отображения имен файлов источников, подключенных к шагу. |
Показать содержимое файла | Выберите для отображения необработанного содержимого выбранного файла. |
Показать содержимое из первой строки данных | Выберите, чтобы отобразить содержимое из первой строки данных для выбранного файла. |
Вкладка "Содержание"
На вкладке "Содержимое" с помощью следующих параметров можно указать формат исходных файлов.
Выберите длину поля в соответствии с его типом:
Вкладка "Обработка ошибок"
На вкладке "Обработка ошибок" можно указать, как шаг будет реагировать на возникновение ошибок, таких как искаженные записи, неправильные строки вложений, неправильное количество полей и преждевременные концы строк. В следующей таблице приведены параметры обработки ошибок:
Опция | Описание |
---|---|
Игнорировать ошибки? | Укажите, хотите ли вы игнорировать ошибки во время синтаксического анализа. |
Пропускать файлы с ошибками? | Выберите, хотите ли вы пропускать те файлы, которые содержат ошибки. Вы можете создать файл, содержащий список файлов, в которых возникают ошибки. В противном случае файлы с ошибками не пропускаются, а файлы с ошибками синтаксического анализа пусты (null). |
Имя поля файла ошибки | Укажите имя файла ошибок, если вы хотите добавить имена полей, в которых произошли ошибки. |
Файл имя поля сообщения об ошибке | Укажите имя поля сообщения об ошибке, если вы хотите добавить имена полей, в которых произошли ошибки в файле ошибок. |
Пропускать строки с ошибками? | Выберите, хотите ли вы пропускать те строки, которые содержат ошибки. Вы можете создать дополнительный файл, содержащий номера строк, в которых возникают ошибки. В противном случае строки с ошибками не пропускаются, а поля с ошибками синтаксического анализа остаются пустыми (null). |
Имя поля счетчика ошибок | Укажите имя поля, если вы хотите добавить поле, содержащее количество ошибок в строке до выходных строк. |
Поля ошибок | Укажите имя поля, если вы хотите добавить поле, содержащее имена полей, в которых произошли ошибки, в выходные строки. |
Текстовое имя ошибки | td>Укажите имя поля, если вы хотите добавить в выходные строки поле, содержащее описания возникновения ошибок синтаксического анализа. |
Каталог файлов предупреждений | Укажите расположение каталога, в который помещаются предупреждения, если они генерируются. Имя полученного файла: /filename.. . |
Каталог файлов ошибок | Укажите расположение каталога, в который помещаются ошибки, если они возникают. Имя результирующего файла: /filename.. . |
Неверные номера строк в каталоге файлов | Укажите расположение каталога, в который помещаются ошибки синтаксического анализа в строке, если они возникают. Имя результирующего файла /filename.. . |
Вкладка "Фильтры"
Вкладка "Фильтры" содержит таблицу со столбцами, в которых вы можете указать строки, которые хотите пропустить в текстовом файле.
Столбец | Описание |
---|---|
Строка фильтра | Строка, которую вы хотите найти. |
Позиция фильтра | Позиция, в которой строка фильтра должна быть размещена в строке. Ноль ( 0 ) — первая позиция в строке. Если вы укажете значение ниже нуля ( 0 ), строка фильтра будет искаться во всей строке. |
Остановить фильтр | Введите 'Y', если вы хотите прекратить обработку текущего текстового файла при обнаружении строки фильтра. Введите 'N', чтобы продолжить обработку после обнаружения строки. |
Положительное совпадение | Enter 'Y', если вы хотите обработать строки, соответствующие строке фильтра. Введите ‘N’, чтобы игнорировать совпадающие строки. |
Вкладка "Поля"
Вкладка "Поля" содержит таблицу со столбцами, в которых можно указать информацию о полях, считываемых из текстового файла.
Значение этого поля зависит от формата:
- Число. Общее количество значащих цифр в числе.
- Строка: общая длина строки.
- Дата: длина печатного вывода строки. Например, "4" возвращает только год.
Значение этого поля зависит от формата:
- Число: количество цифр с плавающей запятой.
- Строка, дата, логическое значение: не используется.
- нет
- слева
- право
- оба
Получить поля
Минимальная ширина
Числовые форматы
Используйте следующую таблицу для указания числовых форматов. Дополнительные сведения о допустимых числовых форматах, используемых на этом шаге, см. в таблице числовых форматов.
Научная нотация
Форматы даты
Используйте следующую таблицу для указания форматов даты. Дополнительные сведения о допустимых форматах даты, используемых на этом этапе, см. в таблице «Форматы даты».
Буква | Компонент даты и времени | Презентация | Примеры |
---|---|---|---|
G | < td data-th="Компонент даты и времени">Обозначение эрыТекст | AD | tr>|
y | Год | Год< /td> | 1996 или 96 |
M | Месяц в году | Месяц | июль, июль или 07 |
w | Неделя в году | Число | 27 |
W | Неделя в месяце | Число | 2 |
D | День в году | Число | 189 |
d td> | День в месяце | Число | 10 td> |
F | День недели в месяце | Номер | 2 |
E | День недели | Текст | Вторник или Вт |
a | маркер am/pm | Текст | PM |
H | Час в сутках (0-23) | Число 0 | Нет данных |
k | Час в сутках (1 -24) | Номер 24 | Н/Д |
K | Час в am/pm (0-11) | Число 0 | Н/Д |
h | Часы в am/pm (1-12) | Число 12 | Н/Д |
m | Минуты в часах | Номер 30 | Н/Д |
s | Секунды в минутах | Число 55 | Н/Д |
S | Миллисекунды | Ню mber 978 | Н/Д |
z | Часовой пояс | Общий часовой пояс | Стандартное тихоокеанское время, PST или GMT- 08:00 |
Z | Часовой пояс | Часовой пояс RFC 822 | -0800 |
Вкладка «Дополнительные поля вывода»
Вкладка Дополнительные поля вывода содержит следующие параметры для указания дополнительной информации об обрабатываемом файле.
Опция | Описание |
---|---|
Поле короткого имени файла | Укажите поле, содержащее имя файла без информации о пути, но с расширением. |
Поле расширения | Укажите поле, содержащее расширение имени файла. | < /tr>
Поле пути | Укажите поле, содержащее путь в формате операционной системы. | tr>
Размер поля | Укажите поле, содержащее размер данных. |
Скрытое поле | Укажите поле, указывающее, скрыт файл или нет (логическое значение). | < /tr>
Поле последнего изменения | Укажите поле, указывающее дату t время последнего изменения файла. |
Поле Uri | Укажите поле, содержащее URI. |
Корневое поле uri | Укажите имя выходного поля URI. | < /tr>
Поддержка внедрения метаданных
Все поля на этом шаге поддерживают вставку метаданных. Вы можете использовать этот шаг с внедрением метаданных ETL, чтобы передать метаданные вашему преобразованию во время выполнения.
Все файловые системы, поддерживаемые Windows, используют концепцию файлов и каталогов для доступа к данным, хранящимся на диске или устройстве. Разработчики Windows, работающие с Windows API для ввода-вывода файлов и устройств, должны понимать различные правила, соглашения и ограничения имен файлов и каталогов.
Доступ к данным можно получить с дисков, устройств и общих сетевых ресурсов с помощью API файлового ввода-вывода. Файлы и каталоги, наряду с пространствами имен, являются частью концепции пути, который представляет собой строковое представление того, где можно получить данные, независимо от того, получены ли они с диска, устройства или сетевого подключения для конкретной операции.
Некоторые файловые системы, такие как NTFS, поддерживают связанные файлы и каталоги, которые также следуют соглашениям и правилам именования файлов, как и обычные файлы или каталоги. Дополнительные сведения см. в разделах «Жесткие ссылки и соединения» и «Точки повторной обработки и операции с файлами».
Дополнительную информацию см. в следующих подразделах:
Чтобы узнать, как настроить Windows 10 для поддержки длинных путей к файлам, см. статью Ограничение максимальной длины пути.
Имена файлов и каталогов
Все файловые системы следуют одним и тем же общим соглашениям об именах для отдельных файлов: базовое имя файла и необязательное расширение, разделенные точкой. Однако каждая файловая система, такая как NTFS, CDFS, exFAT, UDFS, FAT и FAT32, может иметь определенные и отличающиеся правила формирования отдельных компонентов пути к каталогу или файлу. Обратите внимание, что каталог — это просто файл со специальным атрибутом, определяющим его как каталог, но в остальном он должен соответствовать тем же правилам именования, что и обычный файл. Поскольку термин каталог просто относится к особому типу файла в том, что касается файловой системы, в некоторых справочных материалах используется общий термин файл для охвата обеих концепций каталогов. и файлы данных как таковые. По этой причине, если не указано иное, любые правила или примеры именования или использования файла также должны применяться к каталогу. Термин путь относится к одному или нескольким каталогам, обратной косой черте и, возможно, имени тома. Дополнительные сведения см. в разделе «Пути».
Ограничения по количеству символов также могут различаться в зависимости от файловой системы и используемого формата префикса имени пути. Это еще более усложняется поддержкой механизмов обратной совместимости. Например, более старая файловая система MS-DOS FAT поддерживает не более 8 символов для основного имени файла и 3 символа для расширения, всего 12 символов, включая разделитель точек. Это обычно известно как имя файла 8.3. Файловые системы Windows FAT и NTFS не ограничены именами файлов версии 8.3, поскольку они имеют поддержку длинных имен файлов, но они по-прежнему поддерживают версию 8.3 длинных имен файлов.
Соглашения об именах
Следующие основные правила позволяют приложениям создавать и обрабатывать допустимые имена для файлов и каталогов независимо от файловой системы:
Используйте точку, чтобы отделить базовое имя файла от расширения в имени каталога или файла.
Используйте обратную косую черту (\) для разделения компонентов пути. Обратная косая черта отделяет имя файла от пути к нему и одно имя каталога от другого имени каталога в пути. Вы не можете использовать обратную косую черту в имени фактического файла или каталога, потому что это зарезервированный символ, который разделяет имена на компоненты.
При необходимости используйте обратную косую черту в имени тома, например, "C:\" в "C:\path\file" или "\\server\share" в "\\server\share\path". \file" для имен универсального соглашения об именах (UNC). Дополнительные сведения об именах UNC см. в разделе «Ограничение максимальной длины пути».
Не предполагайте чувствительность к регистру. Например, считайте имена OSCAR, Oscar и oscar одинаковыми, хотя некоторые файловые системы (например, POSIX-совместимая файловая система) могут считать их разными. Обратите внимание, что NTFS поддерживает семантику POSIX для учета регистра, но это не поведение по умолчанию. Дополнительные сведения см. в разделе CreateFile.
Обозначения томов (буквы дисков) также нечувствительны к регистру. Например, "D:\" и "d:\" относятся к одному и тому же тому.
Используйте любой символ текущей кодовой страницы для имени, включая символы Unicode и символы расширенного набора символов (128–255), за исключением следующих:
Следующие зарезервированные символы:
- < (меньше чем)
- > (больше)
- : (двоеточие)
- " (двойные кавычки)
- / (косая черта)
- \ (обратная косая черта)
- | (вертикальная полоса или труба) <ли>?(вопросительный знак)
- * (звездочка)
Целое значение, равное нулю, иногда называемое символом NUL ASCII.
Символы, целочисленные представления которых находятся в диапазоне от 1 до 31, за исключением альтернативных потоков данных, где эти символы разрешены. Дополнительные сведения о файловых потоках см. в разделе Файловые потоки.
Любой другой символ, который не разрешен целевой файловой системой.
Используйте точку в качестве компонента каталога в пути для представления текущего каталога, например ".\temp.txt". Дополнительные сведения см. в разделе Пути.
Используйте две последовательные точки (..) в качестве компонента каталога в пути для представления родительского каталога текущего каталога, например "..\temp.txt". Дополнительные сведения см. в разделе Пути.
Не используйте следующие зарезервированные имена для имени файла:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9. Также избегайте этих имен, за которыми сразу следует расширение; например, NUL.txt не рекомендуется. Дополнительные сведения см. в разделе Пространства имен.
Не заканчивайте имя файла или каталога пробелом или точкой. Хотя базовая файловая система может поддерживать такие имена, оболочка Windows и пользовательский интерфейс этого не делают. Однако допустимо указывать точку в качестве первого символа имени. Например, ".temp".
Короткие и длинные имена
Длинным именем файла считается любое имя файла, выходящее за рамки короткого стиля именования MS-DOS (также называемого 8.3). Когда вы создаете длинное имя файла, Windows также может создать короткую форму имени 8.3, называемую псевдонимом 8.3 или коротким именем, и также сохранить ее на диске. Этот псевдоним 8.3 можно отключить по соображениям производительности либо для всей системы, либо для указанного тома, в зависимости от конкретной файловой системы.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: псевдонимы 8.3 нельзя отключить для указанных томов до Windows 7 и Windows Server 2008 R2.
Во многих файловых системах имя файла будет содержать тильду (~) в каждом компоненте имени, которое слишком длинно для соответствия правилам именования 8.3.
Не все файловые системы следуют соглашению о замене тильды, и системы можно настроить таким образом, чтобы отключить создание псевдонима 8.3, даже если они обычно его поддерживают. Поэтому не думайте, что псевдоним 8.3 уже существует на диске.
Чтобы запросить имена файлов формата 8.3, длинные имена файлов или полный путь к файлу из системы, рассмотрите следующие варианты:
- Чтобы получить форму длинного имени файла в формате 8.3, используйте функцию GetShortPathName.
- Чтобы получить версию короткого имени с длинным именем файла, используйте функцию GetLongPathName.
- Чтобы получить полный путь к файлу, используйте функцию GetFullPathName.
В более новых файловых системах, таких как NTFS, exFAT, UDFS и FAT32, Windows сохраняет длинные имена файлов на диске в кодировке Юникод, что означает, что исходное длинное имя файла всегда сохраняется. Это верно, даже если длинное имя файла содержит расширенные символы, независимо от кодовой страницы, которая активна во время операции чтения или записи с диска.
Файлы с длинными именами файлов можно копировать между разделами файловой системы NTFS и разделами файловой системы Windows FAT без потери информации об именах файлов. Это может быть не так для более старых файловых систем MS-DOS FAT и некоторых типов файловых систем CDFS (CD-ROM), в зависимости от фактического имени файла. В этом случае по возможности заменяется короткое имя файла.
Пути
Путь к указанному файлу состоит из одного или нескольких компонентов, разделенных специальным символом (обратной косой чертой), причем каждый компонент обычно представляет собой имя каталога или файла. имя, но с некоторыми заметными исключениями, обсуждаемыми ниже. Часто для интерпретации пути системой очень важно, как выглядит начало или префикс пути. Этот префикс определяет пространство имен, которое использует путь, и, кроме того, какие специальные символы используются в какой позиции пути, включая последний символ.
Если компонент пути является именем файла, он должен быть последним компонентом.
Каждый компонент пути также будет ограничен максимальной длиной, указанной для конкретной файловой системы. В целом, эти правила делятся на две категории: короткие и длинные. Обратите внимание, что имена каталогов хранятся в файловой системе как файлы особого типа, но правила именования файлов также применяются к именам каталогов. Подводя итог, можно сказать, что путь — это просто строковое представление иерархии между всеми каталогами, существующими для определенного файла или имени каталога.
Полный и относительный пути
Для функций Windows API, управляющих файлами, имена файлов часто могут указываться относительно текущего каталога, а для некоторых API требуется полный путь.Имя файла относится к текущему каталогу, если оно не начинается с одного из следующих символов:
- Имя UNC любого формата, которое всегда начинается с двух символов обратной косой черты ("\\"). Дополнительные сведения см. в следующем разделе.
- Обозначение диска с обратной косой чертой, например "C:\" или "d:\".
- Одна обратная косая черта, например, "\directory" или "\file.txt". Его также называют абсолютным путем.
Если имя файла начинается только с обозначения диска, но не с обратной косой черты после двоеточия, оно интерпретируется как относительный путь к текущему каталогу на диске с указанной буквой. Обратите внимание, что текущий каталог может быть или не быть корневым каталогом в зависимости от того, что он был установлен во время самой последней операции «изменить каталог» на этом диске. Ниже приведены примеры этого формата:
- «C:tmp.txt» относится к файлу с именем «tmp.txt» в текущем каталоге на диске C.
- "C:tempdir\tmp.txt" относится к файлу в подкаталоге текущего каталога на диске C.
Путь также считается относительным, если он содержит "двойные точки"; то есть два периода вместе в одном компоненте пути. Этот специальный спецификатор используется для обозначения каталога над текущим каталогом, также известного как «родительский каталог». Ниже приведены примеры этого формата:
- "..\tmp.txt" указывает файл с именем tmp.txt, расположенный в родительском каталоге текущего каталога.
- "..\..\tmp.txt" указывает файл, который находится на два каталога выше текущего каталога.
- "..\tempdir\tmp.txt" указывает файл с именем tmp.txt, расположенный в каталоге с именем tempdir, который является равноправным каталогом для текущего каталога.
Относительные пути могут сочетать оба типа примеров, например "C.\tmp.txt". Это полезно, потому что, хотя система отслеживает текущий диск вместе с текущим каталогом этого диска, она также отслеживает текущие каталоги в каждой из разных букв диска (если в вашей системе их несколько), независимо от какое обозначение диска установлено в качестве текущего диска.
Ограничение максимальной длины пути
В выпусках Windows до Windows 10 версии 1607 максимальная длина пути — MAX_PATH, которая определяется как 260 символов. В более поздних версиях Windows для снятия ограничения требуется изменение раздела реестра или использование инструмента групповой политики. Полную информацию см. в разделе Ограничение максимальной длины пути.
Пространства имен
Существует две основные категории соглашений о пространствах имен, используемых в Windows API, обычно называемых пространствами имен NT и пространствами имен Win32. Пространство имен NT было разработано как пространство имен самого низкого уровня, в котором могут существовать другие подсистемы и пространства имен, включая подсистему Win32 и, соответственно, пространства имен Win32. POSIX — еще один пример подсистемы Windows, созданной на основе пространства имен NT. Ранние версии Windows также определяли несколько предопределенных или зарезервированных имен для определенных специальных устройств, таких как коммуникационные (последовательные и параллельные) порты и консоль дисплея по умолчанию, как часть того, что сейчас называется пространством имен устройств NT, и все еще поддерживаются в текущих версиях. Windows для обратной совместимости.
Пространства имен файлов Win32
В этом и следующем разделах кратко изложены префиксы и соглашения пространства имен Win32 с описанием их использования. Обратите внимание, что эти примеры предназначены для использования с функциями Windows API, и не все они обязательно работают с приложениями оболочки Windows, такими как проводник Windows. По этой причине существует более широкий диапазон возможных путей, чем обычно доступно из приложений оболочки Windows, и приложения Windows, которые используют это преимущество, могут быть разработаны с использованием этих соглашений о пространстве имен.
При файловом вводе-выводе префикс "\\?\" к строке пути указывает API-интерфейсам Windows отключить всю строку синтаксического анализа и отправить строку, следующую за ней, прямо в файловую систему. Например, если файловая система поддерживает большие пути и имена файлов, вы можете превысить ограничения MAX_PATH, которые в противном случае применяются API-интерфейсами Windows. Дополнительные сведения об обычном ограничении максимального пути см. в предыдущем разделе Ограничение максимальной длины пути.
Поскольку он отключает автоматическое расширение строки пути, префикс "\\?\" также позволяет использовать ".." и "." в именах путей, что может быть полезно, если вы пытаетесь выполнить операции с файлом с этими в противном случае зарезервированными спецификаторами относительного пути как части полного пути.
Многие, но не все API файлового ввода-вывода поддерживают "\\?\"; вы должны посмотреть справочную тему для каждого API, чтобы быть уверенным.
Обратите внимание, что следует использовать API Unicode, чтобы убедиться, что префикс "\\?\" позволяет превысить MAX_PATH
Пространства имен устройств Win32
Префикс "\\.\" будет обращаться к пространству имен устройств Win32, а не к пространству имен файлов Win32.Так осуществляется доступ к физическим дискам и томам напрямую, минуя файловую систему, если API поддерживает такой тип доступа. Таким образом вы можете получить доступ ко многим устройствам, кроме дисков (например, с помощью функций CreateFile и DefineDosDevice).
Например, если вы хотите открыть последовательный порт 1 системы, вы можете использовать "COM1" в вызове функции CreateFile. Это работает, потому что COM1–COM9 являются частью зарезервированных имен в пространстве имен NT, хотя использование префикса «\\.\» также будет работать с этими именами устройств. Для сравнения, если у вас установлена плата последовательного расширения на 100 портов и вы хотите открыть COM56, вы не сможете открыть ее с помощью «COM56», поскольку для COM56 нет предопределенного пространства имен NT. Вам нужно будет открыть его с помощью "\\.\COM56", потому что "\\.\" переходит непосредственно к пространству имен устройства, не пытаясь найти предопределенный псевдоним.
Другим примером использования пространства имен устройств Win32 является использование функции CreateFile с "\\.\PhysicalDiskX" (где X – допустимое целочисленное значение) или " \\.\CdRomX". Это позволяет вам обращаться к этим устройствам напрямую, минуя файловую систему. Это работает, потому что эти имена устройств создаются системой по мере перечисления этих устройств, а некоторые драйверы также создают другие псевдонимы в системе. Например, драйвер устройства, реализующий имя "C:\", имеет собственное пространство имен, которое также является файловой системой.
API, использующие функцию CreateFile, обычно работают с префиксом "\\.\", поскольку функция CreateFile используется для открытия как файлов, так и устройств, в зависимости от используемых вами параметров.
Если вы работаете с функциями Windows API, вы должны использовать префикс "\\.\" для доступа только к устройствам, а не к файлам.
Большинство API не поддерживают "\\.\"; только те, которые предназначены для работы с пространством имен устройства, распознают его. Всегда проверяйте справочную тему для каждого API, чтобы быть уверенным.
Пространства имен NT
Есть также API, которые позволяют использовать соглашение о пространстве имен NT, но диспетчер объектов Windows в большинстве случаев делает это ненужным. Для иллюстрации полезно просматривать пространства имен Windows в обозревателе системных объектов с помощью инструмента Windows Sysinternals WinObj. Когда вы запускаете этот инструмент, вы видите пространство имен NT, начинающееся с корня, или "\". Подпапка под названием "Global??" где находится пространство имен Win32. Объекты именованных устройств находятся в пространстве имен NT в подкаталоге «Device». Здесь вы также можете найти Serial0 и Serial1, объекты устройства, представляющие первые два COM-порта, если они есть в вашей системе. Объект устройства, представляющий том, может иметь вид HarddiskVolume1, хотя числовой индекс может отличаться. Имя «DR0» в подкаталоге «Harddisk0» является примером объекта устройства, представляющего диск, и т. д.
Чтобы сделать эти объекты устройств доступными для приложений Windows, драйверы устройств создают символическую ссылку (символическую ссылку) в пространстве имен Win32 "Global??" на соответствующие объекты устройств. Например, COM0 и COM1 в разделе "Глобальные??" подкаталог — это просто символическая ссылка на Serial0 и Serial1, «C:» — это символическая ссылка на HarddiskVolume1, «Physicaldrive0» — это символическая ссылка на DR0 и так далее. Без символической ссылки указанное устройство «Xxx» не будет доступно ни одному приложению Windows, использующему соглашения о пространстве имен Win32, как описано ранее. Однако дескриптор этого устройства может быть открыт с помощью любых API, поддерживающих абсолютный путь пространства имен NT в формате "\Device\Xxx".
С добавлением многопользовательской поддержки через службы терминалов и виртуальные машины возникла необходимость в виртуализации общесистемного корневого устройства в пространстве имен Win32. Это было достигнуто путем добавления символической ссылки с именем «GLOBALROOT» в пространство имен Win32, которое вы можете увидеть в «Global??» подкаталог инструмента браузера WinObj, который обсуждался ранее, и может получить доступ через путь «\\?\GLOBALROOT». Этот префикс гарантирует, что путь, следующий за ним, соответствует истинному корневому пути диспетчера системных объектов, а не пути, зависящему от сеанса.
- Grant-proposal-henry-edits-finalfinal.doc
- Grant-proposal-final-Julia_edits_v4.doc
- FINAL_proposal_Aug2016_kct-updated.doc
Это всего лишь один небольшой пример недостатка управления информацией, который может вызвать массу ненужных разочарований. Чем более организованно мы управляем информацией, будь то документы, электронные таблицы или мультимедиа, тем эффективнее и действеннее мы можем быть в нашей правозащитной деятельности. Вот почему соглашения об именах файлов так важны.
Соглашение об именах файлов — это систематический метод присвоения имен файлам, который облегчает их последующее извлечение. Согласованное и описательное соглашение позволит вам:
- Узнавать содержимое файла, не открывая его
- Находить и идентифицировать файлы, даже если они больше не находятся в исходной папке.
- Легкий просмотр длинных списков файлов для инвентаризации или проверки их отсутствия.
- Управлять файлами стало проще, даже если все они хранятся в одной центральной папке или каталоге.
Разработка соглашения об именах файлов
Имя файла может состоять из ряда описательных элементов, таких как ключевые слова, даты, идентификационные номера и т. д. Чтобы разработать соглашение об именовании файлов, вы должны решить, какие типы элементов следует включать и в каком порядке.< /p>
Например, соглашение об именах файлов может включать следующие компоненты в следующем порядке: [ГГММДД]_[Проект]_[Местоположение]_[Событие].xxx
Примеры имен файлов, основанные на этом примерном соглашении, могут быть такими:
- 160301_HRC_Geneva_launch.jpg
- 151208_Uwazi_Madrid_inception.pdf
- 160219_OHCHR_Tunis_meeting.jpg
Ниже приведены некоторые рекомендации по созданию собственного соглашения об именах файлов.
1. Подумайте, как вы хотите сортировать и извлекать файлы
Как вы хотите сортировать и извлекать файлы? Ответ на этот вопрос поможет определить некоторые важные компоненты вашего соглашения об именах файлов. Имейте в виду, что сортировка файлов выполняется слева направо.
- Начните имя файла с самого важного параметра. Это позволит вам организовать файлы в алфавитном или хронологическом порядке по этому параметру без необходимости выполнять какой-либо поиск. Например, если основным способом доступа к файлу судебного дела является его номер, то он должен быть первым элементом в вашем соглашении об именовании файлов: когда вы сортируете свои документы в файловом менеджере, вы сначала увидите их по номеру дела.
- Для дат используйте ГГГГ-ММ-ДД (или ГГГГММДД, или ГГММДД, или ГГММ). Чтобы обеспечить сортировку файлов в правильном хронологическом порядке, наиболее значимые компоненты даты и времени должны отображаться первыми, а затем наименее значимые компоненты. Если все остальные слова в имени файла совпадают, это соглашение позволит нам сортировать по году, затем по месяцу, а затем по дате. В некоторых соглашениях дата указывается перед каждым именем файла, потому что это наиболее логичный способ извлечения файлов для их команды.
- Отметить разные версии одного и того же файла. Если файл будет поддерживаться с течением времени, используйте условное обозначение v1, v2, v3 и т. д., чтобы обозначить его место в последовательности версий. Вы можете отделить букву «v» от типа контента символом подчеркивания («_») или дефисом («-»). По мере создания и обновления версий меняйте версию, но сохраняйте имя файла прежним.
- Не забывайте нули, если вам нужны порядковые номера. Если будет более девяти файлов с одинаковыми именами (например, в случае версии или в серии фотографий), убедитесь, что вы настроили номера следующим образом: 01, 02, 03, … Это позволит отсортировать их в хронологическом порядке. То же самое, если файлов более 99, это должно быть 001, …060, …099, …100
2. Используйте соответствующие компоненты в именах файлов, чтобы предоставить описание и контекст
Имена файлов должны содержать основные элементы каждого файла в зависимости от того, что подходит для ваших нужд поиска. Имена файлов должны существовать дольше человека, который первоначально назвал файл, поэтому подумайте, какая информация будет полезна кому-то через 15 лет. Потенциальные компоненты для правозащитных организаций включают:
- Название организации
- Программа или тема
- Тип документа
- Географический охват
- Дата или период
- Язык документа
- Тип содержания, например "счет" или "отчет"
Имейте в виду, что вы, скорее всего, захотите использовать согласованные сокращения для этих компонентов, чтобы имена файлов были короткими.
3. Держите имя файла разумной длины
Длинные имена файлов плохо работают с некоторыми типами программного обеспечения, поэтому лучше делать их короткими. Для этого вы можете рассмотреть следующее:
- Сокращение года до двух чисел вместо четырех.
- Сокращение компонентов имени файла (например, используйте «inv» вместо «invoice» или «fr» вместо «francais»)
- Используйте как можно меньше слов, чтобы передать подлинность документа.
4. Избегайте специальных символов и пробелов
- Подчеркивание (например, file_name.xxx)
- Дефисы (например, имя-файла.xxx)
- Без разделения (например, имя файла.xxx)
- Верблюжий регистр, когда первая буква каждого раздела текста пишется с большой буквы (например, FileName.xxx)
5. Задокументируйте свое соглашение об именах файлов и привлеките других пользователей
Важно записать правила именования файлов, чтобы они оставались согласованными. Если кто-то, кроме вас, дает имена файлам, то вдвойне важно документировать соглашение и хранить его в легкодоступном месте. Вы можете включить эту документацию в файл readme.txt в основной общей папке.
Вот два примера задокументированных соглашений об именах файлов от наших партнеров: один от Африканской комиссии по правам человека и народов (ACHPR), а другой от Международной комиссии юристов (ICJ).
Помимо текстовых файлов, вы также можете провести небольшое внутреннее обучение, чтобы объяснить, почему так важно использовать новое соглашение об именах файлов и как оно работает, или создать видео, в котором рассматриваются ключевые моменты соглашения.< /p>
Дополнительные ресурсы
Библиотеки Стэнфордского университета предлагают два иллюстративных тематических исследования для дальнейшего изучения соглашений об именах файлов:
Благодаря достижениям в области вычислительной техники перемещение файлов между различными платформами стало намного проще, чем всего несколько лет назад. Принятие стандарта UNICODE для кодировки символов и кросс-совместимости между операционными системами привело к тому, что проблемы с открытием файла, полученного в виде вложения в электронное письмо, загруженного с веб-сайта или доступного на платформе облачного хранилища, стали крайне редкими, но проблемы все еще могут возникать. .
Хотя подавляющее большинство настольных компьютеров по-прежнему используют ОС Microsoft Windows или Macintosh, существует множество других операционных систем (и файловых систем), которые могут взаимодействовать с файлами в различных точках. Сотовые телефоны, ленточные накопители, сетевое оборудование, телевизоры и даже цифровые камеры сегодня поддерживают файловые системы.
Большинство современных файловых систем и операционных систем, в которых они используются, поддерживают гораздо более длинные имена файлов, чем персональные компьютеры, работающие под управлением Microsoft DOS и ранних версий Windows. Эти компьютеры использовали имя файла 8.3, которое позволяло восемь символов слева от точки и три символа справа, чтобы указать компьютеру, какое приложение использовать для его отображения. Однако по-прежнему можно столкнуться с проблемами, связанными с длиной имени файла.
Принятие правильных соглашений об именах файлов может помочь гарантировать, что файлы будут работать с различными операционными системами и форматами дисков, такими как Windows, Linux, Mac OS X и UNIX. Именование файлов также является важным фактором при передаче файлов через Интернет, когда может быть неочевидно, какая компьютерная платформа использовалась при первоначальном создании файлов.
Имена файлов могут быть как описательными, так и не описательными. Описательные имена файлов полезны для небольших, четко определенных проектов с существующими схемами идентификации, которые связывают цифровой объект с исходным материалом. Однако непоследовательное применение терминов или опечатки будут способствовать ошибкам индексации и сортировки. Неописательные имена файлов обычно представляют собой генерируемые системой последовательные числовые строки, такие как цифровой идентификационный номер, и часто связаны с метаданными, хранящимися в другом месте. Неописательные имена файлов часто создаются для крупномасштабных проектов оцифровки и могут использовать цифровой идентификационный номер и числовые последовательности для обозначения пакетных или родительско-дочерних отношений. Преимущество неописательных имен заключается в том, что меньше вероятность повторения или неуникальных имен файлов в структуре данных.
Некоторые приложения и компьютерные скрипты могут не распознавать пробелы или иначе обрабатывать ваши файлы при использовании пробелов. Лучше всего заменять пробелы в именах файлов подчеркиванием (_) или дефисом (-). В приложении B бюллетеня NARA 2015-04 указано, что пробелы в именах файлов запрещены. Веб-среды переводят пробелы и отображают их как «%20». Например, «Имя файла.doc» будет отображаться в URL-адресе как «Файл%20Name.doc», где?. Это изменение может привести к путанице при определении фактического имени файла.
Следует избегать пунктуации, символов или специальных символов (точки, запятые, круглые скобки, амперсанд, звездочки и т. д.). Некоторые из этих символов используются в операционных системах для выполнения определенных задач, например для обозначения уровней папок в продуктах Microsoft и операционных системах Mac. Точки используются для идентификации форматов файлов, таких как .jpg и .doc.
Python предоставляет встроенные функции и модули для поддержки этих операций.
Открытие/закрытие файла
Чтение/запись текстовых файлов
Объект fileObj, возвращаемый после открытия файла, содержит указатель файла. Первоначально он располагается в начале файла и перемещается вперед всякий раз, когда выполняются операции чтения/записи.
Чтение строки/строк из текстового файла
- fileObj.readline() -> str : (наиболее часто используемый) Читает следующую строку (до и включая новую строку) и возвращает строку (включая новую строку). Он возвращает пустую строку после конца файла (EOF).
- fileObj.readlines() -> [str] : чтение всех строк в список строк.
- fileObj.read() -> str : чтение всего файла в строку.
Запись строки в текстовый файл
- fileObj.write(str) -> int : Записать заданную строку в файл и вернуть количество записанных символов. Вам нужно явно завершить str с помощью '\n' , если это необходимо.'\n' будет преобразован в новую строку в зависимости от платформы ("\r\n" для Windows или '\n' для Unix/Mac OS).
Примеры
Построчная обработка текстового файла
Мы можем использовать оператор with для открытия файла, который будет автоматически закрыт при выходе, и цикл for для построчного чтения следующим образом:
Выражение with эквивалентно выражению try-finally следующим образом:
Пример: построчное копирование файла
Следующий скрипт копирует один файл в другой построчно, добавляя перед каждой строкой номер строки.
Операции с двоичными файлами
- fileObj.tell() -> int : возвращает текущую позицию в потоке. Текущая позиция потока — это количество байтов от начала файла в двоичном режиме и непрозрачное число в текстовом режиме.
- fileObj.seek(смещение): устанавливает текущую позицию в потоке на смещение байт от начала файла.
Например, [ЗАДАЧ]
Каталог и управление файлами
В Python управление каталогами и файлами поддерживается модулями os , os.path , Shutil , .
Операции с путями с использованием модуля os.path
В Python путь может означать:
- файл,
- каталог или
- символическая ссылка (символическая ссылка).
Путь может быть абсолютным (начиная с корня) или относительным относительно текущего рабочего каталога (CWD).
Разделитель пути зависит от платформы (Windows использует '\' , а Unix/Mac OS использует ' /' ). Модуль os.path поддерживает независимые от платформы операции над путями, разумно обрабатывая разделитель путей.
Проверка существования и типа пути
- os.path.exists(path) -> bool : проверить, существует ли указанный путь.
- os.path.isfile(путь_к_файлу) , os.path.isdir(путь_к_каталогу) , os.path.islink(путь_ссылки) -> bool : проверить, является ли указанный путь файлом, каталогом или символической ссылкой.
Формирование нового пути
Разделитель пути зависит от платформы (Windows использует '\' , а Unix/Mac OS использует '/' ). Для переносимости важно НЕ жестко кодировать разделитель пути. Модуль os.path поддерживает независимые от платформы операции над путями, разумно обрабатывая разделитель путей.
- os.path.sep : разделитель путей текущей системы.
- os.path.join(path, *paths) : формирование и возврат пути путем объединения одного или нескольких компонентов пути путем вставки зависящего от платформы разделителя пути ( '/' или '\' ). Чтобы сформировать абсолютный путь, вам нужно начать с os.path.sep от имени пользователя root.
Управление именем каталога и именем файла
- os.path.dirname(путь) : возвращает имя каталога для заданного пути (файл, каталог или символическая ссылка). Возвращаемое имя каталога может быть абсолютным или относительным, в зависимости от заданного пути.
- os.path.abspath(path) : возвращает абсолютный путь (начиная с корня) заданного path . Это может быть абсолютное имя файла, абсолютное имя каталога или абсолютная символическая ссылка.
Например, чтобы сформировать абсолютный путь к файлу с именем out.txt в том же каталоге, что и in.txt , вы можете извлечь абсолютное имя каталога из in.txt , а затем присоединиться к out.txt следующим образом:
Когда модуль загружается в Python, __file__ устанавливается на имя модуля. Попробуйте запустить этот скрипт с различными ссылками на __file__ и изучите их вывод:
Обработка символической ссылки (Unixes/Mac OS)
- os.path.realpath(path) : (для символических ссылок) Аналогично abspath() , но возвращает канонический путь, исключая любые встречающиеся символические ссылки.
Управление каталогами и файлами с помощью модулей os и Shutil
Модули os и Shutil обеспечивают интерфейс к операционной системе и системной оболочке.
- Если вы хотите просто прочитать или записать файл, используйте встроенную функцию open() .
- Если вы просто хотите управлять путями (файлами, каталогами и символическими ссылками), используйте модуль os.path.
- Если вы хотите прочитать все строки во всех файлах в командной строке, используйте модуль ввода файлов.
- Для создания временных файлов/каталогов используйте модуль tempfile.
Управление каталогом
Управление файлами
- os.rename(src_file, dest_file) : переименовать файл.
- os.remove(файл) или os.unlink(файл): удалить файл. Вы можете использовать os.path.isfile(file), чтобы проверить, существует ли file.
Например [TODO],
Список каталогов
- os.listdir(path='.') -> [path] : список всех записей в данном каталоге (исключая '.' и '..' ), по умолчанию текущий каталог.
Рекурсивное отображение каталога с помощью os.walk()
- ос.walk(top, topdown=True, onerror=None, followlinks=False) : рекурсивный список всех записей начиная с сверху .
Рекурсивное отображение каталога с помощью модуля glob (Python 3.5)
Копирование файла
Команда оболочки [TODO]
- os.system(command_str) : запустить команду оболочки. (В Python 3 вместо этого используйте subprocess.call().)
Переменные среды [TODO]
- os.getenv(varname, value=None) : возвращает переменную среды, если она существует, или value, если ее нет. , по умолчанию нет .
- os.putenv(имя_переменной, значение) : установите для переменной среды значение значение.
- os.unsetenv(имя_переменной): удалить (сбросить) переменную среды.
модуль ввода файла
Модуль fileinput обеспечивает поддержку обработки строк ввода из одного или нескольких файлов, указанных в аргументах командной строки ( sys.argv ). Например, создайте следующий скрипт с именем " test_fileinput.py ":
Обработка текста
Для простых операций с текстовыми строками, таких как поиск и замена строк, можно использовать встроенные строковые функции (например, str.replace(old, new)) ) . Для поиска и замены сложных шаблонов вам необходимо освоить регулярное выражение (регулярное выражение).
Операции со строками
Встроенный класс str предоставляет множество функций-членов для работы с текстовыми строками. Предположим, что s — это объект str.
Удалить пробелы (пробел, табуляция и новая строка)
- s.strip()-> str : возвращает копию строки s с удаленными начальными и конечными пробелами. Пробелы включают пробел, табуляцию и новую строку.
- s.strip([chars]) -> str : удаляет заданные начальные/конечные символы вместо пробелов.
- s.rstrip() , s.lstrip() -> str : удаляет правые (конечные) пробелы и левые (начальные) пробелы соответственно.< /li>
s.rstrip() чаще всего используется для удаления завершающих пробелов/перевода строки. Ведущие пробелы обычно имеют значение.
Верхний/нижний регистр
- s.upper() , s.lower() -> str : возвращает копию строки s, преобразованную в верхний и нижний регистр. соответственно.
- s.isupper() , s.islower() -> bool : проверьте, является ли строка прописной или строчной, соответственно.
- s.find(key_str, [начало], [конец]) -> int|- 1 : вернуть самый низкий индекс в срезе s [начало:конец] (по умолчанию вся строка); или -1, если не найдено.
- s.index(key_str, [начало], [конец]) -> int|ValueError : аналогично find() , но вызывает ValueError, если не найдено.
- s.startswith(key_str, [начало], [конец]) , s .endsswith(key_str, [начало], [конец]) -> bool : проверить, начинается или заканчивается строка с key_str .
Найти и заменить
- s.replace(old, new, [count]) -> str : вернуть копию при этом все вхождения old заменены на new . Необязательный параметр count ограничивает количество заменяемых вхождений, по умолчанию все вхождения.
str.replace() идеально подходит для простой замены текстовой строки без необходимости сопоставления с образцом.
Разделить на токены и объединить
- s.split([sep], [maxsplit=-1]) -> [str] : возвращает список слов. используя sep в качестве строки-разделителя. Разделителем по умолчанию являются пробелы (пробел, табуляция и новая строка). maxSplit ограничивает максимальное количество операций разделения, по умолчанию -1 означает отсутствие ограничений.
- sep.join([str]) -> str : обратный метод split() . Присоединяйтесь к списку строк с помощью sep в качестве разделителя.
Регулярное выражение в модуле re
Я предполагаю, что вы знакомы с регулярными выражениями, иначе вы могли бы прочитать:
- "Регулярное выражение на примерах" для обзора синтаксиса регулярных выражений и примеров.
- "Регулярные выражения" для полного охвата.
Модуль re обеспечивает поддержку регулярных выражений (regex).
Обратная косая черта ( \ ), исходная строка Python r'. ' против обычной строки
В синтаксисе регулярного выражения используется обратная косая черта ( \ ):
- для метасимволов, таких как \d (цифра), \D (не цифра), \s (пробел), \S (не пробел), \w (слово), \W (не слово)
- для экранирования специальных символов регулярных выражений, например, \. для . , \+ для + , \* для * , \? для ? . Вам также нужно написать \\ для соответствия \ .
С другой стороны, обычные строки Python также используют обратную косую черту для управляющих последовательностей, например, \n для новой строки, \t для табуляции. Опять же, вам нужно написать \\ вместо \ .
Чтобы записать шаблон регулярного выражения \d+ (одна или несколько цифр) в обычную строку Python, вам нужно написать '\\d+' .Это громоздко и чревато ошибками.
Решение Python использует необработанную строку с префиксом r в форме r'. ' . Он игнорирует интерпретацию управляющей последовательности строки Python. Например, r'\n' — это '\'+'n' (два символа) вместо новой строки (один символ). Используя необработанную строку, вы можете написать r'\d+' для шаблона регулярного выражения \d+ (вместо обычной строки '\\d+' ).
Кроме того, Python обозначает обратные ссылки в скобках (или группы захвата) как \1 , \2 , \3 , . которые могут быть записаны как необработанные строки r'\1' , r'\2' вместо обычных строк '\\1' и '\\2' . Обратите внимание, что в некоторых языках используются $1, $2, . для обратных ссылок.
Я предлагаю вам использовать необработанные строки для строк шаблонов регулярных выражений и строк замены.
Компиляция (создание) объекта шаблона регулярных выражений
Вызов операций регулярных выражений
Вы можете вызывать большинство функций регулярных выражений двумя способами:
- regexObj.func(str): применить скомпилированное регулярное выражение object к str , через функцию-член SRE_Pattern func() .
- re.func(regexObj|regexStr, str) : применить объект регулярного выражения (скомпилированный) или < em>regexStr (не скомпилировано) в str через функцию уровня модуля re func() . Эти функции уровня модуля представляют собой ярлыки для описанных выше, которые не требуют предварительной компиляции объекта регулярного выражения, но пропускают модификаторы, если используется regexStr.
Найти с помощью finalAll()
- regexObj.findall(str) -> [str] : возвращает список всех совпадающих подстрок.
- re.findall(regexObj|regexStr, str) -> [str] : то же, что и выше.
Заменить с помощью sub() и subn()
- regexObj.sub(replaceStr, inStr, [count=0]) -> outStr: заменить (заменить) совпавшие подстроки в заданном inStr на replaceStr , до количества вхождений, по умолчанию все.
- regexObj.subn(replaceStr, inStr, [count=0]) -> (outStr, count): аналогично sub() , но возвращает новую строку вместе с количеством замен в двух кортежах.
- re.sub(regexObj|regexStr, replaceStr, inStr, [count em>=0]) ->outStr: то же, что и выше.
- re.subn(regexObj|regexStr, replaceStr, inStr, [count em>=0]) -> (outStr, count) : то же, что и выше.
Примечания. Для простой замены строки используйте str.replace(old, new, [max= -1]) -> str, что более эффективно. См. раздел выше.
Использование обратных ссылок в скобках \1 , \2 , . в замене и шаблоне
В Python обратные ссылки в круглых скобках регулярных выражений (группы захвата) обозначаются как \1 , \2 , . Вы можете использовать необработанную строку (например, r'\1' ), чтобы избежать экранирования обратной косой черты в обычной строке (например, '\\1' ).
Найти с помощью search() и Match Object
Поиск() возвращает специальный объект Match, инкапсулирующий первое совпадение (или None, если совпадений нет). Затем вы можете использовать следующие методы для обработки результирующего объекта Match:
- matchObj.group() : возвращает совпадающую подстроку.
- matchObj. start() : возвращает начальную совпадающую позицию (включительно).
- matchObj. end() : возвращает конечную совпавшую позицию (эксклюзивно).
- matchObj. span() : возвращает кортеж совпадающей позиции (начало, конец).
Чтобы получить обратные ссылки (или группы захвата) внутри объекта Match:
- matchObj. groups() : возвращает кортеж захваченных групп (или обратных ссылок)
- matchObj .group(n) : возвращает группу захвата n , где n начинается с 1 .
- matchObj.lastindex : последний индекс захватываемой группы
Поиск с использованием match() и fullmatch()
Search() соответствует любому заданному элементу inStr[begin:end] . С другой стороны, match() соответствует с начала inStr[начало:конец] (аналогично в шаблон регулярного выражения ^. ); в то время как fullmatch() соответствует всему inStr[begin:end] (аналогично шаблону регулярного выражения ^. $ ).
Найти с помощью finditer()
Функция finditer() аналогична функции findall(). findall() возвращает список совпадающих подстрок. Finditer() возвращает итератор для объектов Match. Например,
Разделение строки на токены
Функция split() разбивает заданный inStr на список, используя шаблон регулярного выражения в качестве разделителя (разделителя). Например,
Примечания. Для простого разделителя используйте str.split([sep]) , что более эффективно. См. раздел выше.
Парсинг веб-страниц
Ссылки:
Скрапинг веб-страниц (или сбор веб-страниц или извлечение веб-данных) означает чтение необработанной HTML-страницы для извлечения нужных данных. Излишне говорить, что вам необходимо освоить HTML, CSS и JavaScript.
Python поддерживает просмотр веб-страниц с помощью запросов пакетов и BeautifulSoup (bs4).
Установить пакеты
Вы можете установить соответствующие пакеты с помощью pip следующим образом:
Шаг 0. Проверка целевой веб-страницы
- Нажмите F12 на целевой веб-странице, чтобы включить отладчик F12.
- Выберите «Инспектор».
- Нажмите кнопку "Выбрать" (крайний левый значок со стрелкой) и наведите указатель мыши на нужную часть HTML-страницы. Изучите коды.
Шаг 2. Преобразование HTML-текста в древовидную структуру с помощью BeautifulSoup и поиск нужных данных
Вы можете записать выбранные данные в файл:
Вы также можете использовать модуль csv для записи строк данных с заголовком:
Шаг 3. Загрузите выбранный документ с помощью urllib.request
Возможно, вы захотите загрузить такие документы, как текстовые файлы или изображения.
Шаг 4. Задержка
Чтобы избежать рассылки спама на веб-сайт с запросами на загрузку (и пометки как спамера), вам необходимо на некоторое время приостановить работу кода.
Читайте также: