имя файла — это… Что такое имя файла?
Имя файла — Отображение содержимого каталога C:/temp имён находящихся в нём файлов по команде dir в командном итерпретаторе ОС Windows Имя файла строка символов, однозначно определяющая файл в некотором пространстве имён … Википедия
Атрибуты файла — совокупность байтов, выделяющих файл из множества других файлов. Атрибутами файла являются: имя файла и тип содержимого; дата и время создания файла; имя владельца файла; размер файла; права доступа к файлу; метод доступа к файлу. См. также:… … Финансовый словарь
Расширение имени файла — (англ. filename extension, часто говорят просто расширение файла или расширение) последовательность символов, добавляемых к имени файла и предназначенных для идентификации типа (формата) файла. Это один из распространённых способов, с… … Википедия
перенос файла — Передача файла из одного каталога либо папки в другую. Нередко при переносе пользователь изменяет имя файла. В результате файл записывается в новом месте и стирается в старом. В отличие от этого, при копировании файла он появляется в новом месте… … Справочник технического переводчика
Формат X файла — формат файла для хранения 3D объектов, созданный компанией Microsoft. Этот формат хранит информацию о геометрии 3D объекта (координаты вершин и координаты нормалей), текстурные координаты, описание материалов, пути и названия к текстурам, которые … Википедия
Формат файла — Формат спецификация структуры данных, записанных в компьютерном файле. Формат файла обычно указывается в его имени, как часть, отделённая точкой (обычно эту часть называют расширением имени файла, хотя, строго говоря, это неверно). Например,… … Википедия
атрибуты файла — Идентифицируемые атрибуты файла (имя и др.) [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN file attributes … Справочник технического переводчика
передача файла — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] передача файла Определяет обмен крупными блоками данных, например программами. На рисунке 3 показано общее представление концептуальной модели сервиса ACSI. [ГОСТ Р МЭК 61850 7 … Справочник технического переводчика
атрибут файла — Характеристика, определяющая файл: имя, размер, организация (тип), метод доступа, длина записи, тип записи и др. [Домарев В.В. Безопасность информационных технологий. Системный подход.] Тематики защита информации EN file attribute … Справочник технического переводчика
Filename — Имя файла … Краткий толковый словарь по полиграфии
FAT — (англ. File Allocation Table «таблица размещения файлов») классическая архитектура файловой системы, которая из за своей простоты всё ещё широко используется для флеш накопителей. В недавнем прошлом использовалась в дискетах, на… … Википедия
Имя Файла: значение имени, происхождение, судьба, характер, национальность, перевод, написание
Что означает имя Файла? Что обозначает имя Файла? Что значит имя Файла для человека? Какое значение имени Файла, происхождение, судьба и характер носителя? Какой национальности имя Файла? Как переводится имя Файла? Как правильно пишется имя Файла? Совместимость c именем Файла — подходящий цвет, камни обереги, планета покровитель и знак зодиака. Полная характеристика имени Файла и его подробный анализ вы можете прочитать онлайн в этой статье совершенно бесплатно.
Содержание толкования имени
Анализ имени Файла
Имя Файла состоит из 5 букв. Пять букв имени являются показателем гуманитарных наклонностей. Эти люди любят и умеют ценить искусство, они – приятные и интересные собеседники. Такой человек никогда не вызовет у собеседника ощущения, что он имеет дело с «пустышкой», стремящейся «пустить пыль в глаза». Поэтому отношения с представителями противоположного пола всегда основаны прежде всего на взаимном уважении. Проанализировав значение каждой буквы в имени Файла можно понять его тайный смысл и скрытое значение.
Значение имени Файла в нумерологии
Нумерология имени Файла может подсказать не только главные качества и характер человека. Но и определить его судьбу, показать успех в личной жизни, дать сведения о карьере, расшифровать судьбоносные знаки и даже предсказать будущее. Число имени Файла в нумерологии — 3. Девиз имени Файла и троек по жизни: «Сделаю все, чтобы вы обратили на меня внимание!»
- Планета-покровитель для имени Файла — Юпитер.
- Знак зодиака для имени Файла — Стрелец.
- Камни-талисманы для имени Файла — янтарь, аметист, авантюрин, хризопаз, доломит, бриллиант Геркмайера, ляпис лаузрь, морганит, пирит, рубин, розовый сапфир, сардоникс, сугилит, голубой топаз, черный турмалин, цаворит.
Присутствие «тройки» среди чисел нумерологического ядра указывает на особое видение, позволяющее определить, чего именно недостает миру для совершенства. И настоятельную потребность восполнить этот недостаток, потребность, которая становится основой мотивации и главной движущей силой для каждого шага по жизни.
«Тройка» в числах имени Файла – Числе Выражения, Числе Души и Числе внешнего облика – определяет наличие творческих способностей, то есть – врожденного умения создавать новое и предрасположенности к занятиям такого рода. Цифра 3 в нумерологии означает наличие явных или скрытых талантов и неординарных способностей. Тройки по имени Файла удачливы, как никто другой. По натуре своей обычно это оптимистичные люди, не опускающие руки даже при столкновении с самыми сложными жизненными испытаниями. Часто они талантливы, легко обучаются любому ремеслу, общительны и нравятся людям, имеют много друзей. Тройку как будто берегут высшие силы. Это число везения и удачливости. Другой стороной характера Тройки является стремление к духовности. Тройка с именем Файла чаще всего богата интеллектом, но очень хитра. Тройка добра, оптимистична, любит путешествовать и философствовать. Тройке трудно сосредоточиться на каком-либо одном занятии, ее рассеянность несет трудности. Любит наслаждаться жизнью, все время пытается испытать удачу. Самый большой страх Тройки по имени Файла — не везде успеть, упустить хорошую возможность. Тройка любит и умеет учиться, потому что любознательна, обладает пытливым умом. Тройка Файла — настоящий борец за справедливость, адвокат для всех знаков зодиака и хороший друг. Порадовать Тройку можно, если предоставить ей полную свободу действий.
- Влияние имени Файла на профессию и карьеру. Что значит число 3 в выборе рода занятий? Способы профессиональной самореализации для людей, имеющих «тройку» в нумерологическом ядре – бесчисленны, а возможности в этом плане – практически неограниченны. Подходящие профессии: все творческие профессии, особенно писатели, артисты.
- Влияние имени Файла на личную жизнь. Личная жизнь «тройки» с именем Файла никогда не бывает простой, и очень редко становится «эталоном» гармонии и счастья. Тройки – оптимисты, которые становятся душой компании, для них важно быть в центре внимания. Поэтому им идеально подойдет партнер, который будет смотреть на мир так же, как они сами. Число 3 совместимо с единицами, тройками, девятками и шестерками.
Планета покровитель имени Файла
Число 3 для имени Файла значит планету Юпитер. Планета Юпитер наделяет людей с именем Файла оптимизмом. Они уважительно относятся к окружающим и ждут такого же отношения к себе. Люди с именем Файла, как магнит, притягивают к себе счастье и гармонию. Они не напористы, но умеют добиваться своего. Обладатели имени Файла склонны к самокопанию, и это приводит к неплохим результатам. Они достаточно неплохо разобрались в себе и могут верно оценивать личность буквально с первого момента встречи. Понимая, что человек не идеален, они стремятся к самоусовершенствованию, но не требуют того же от других. Заступаются за тех и помогают тем, кто требует помощи или поддержки, бескорыстны, склонны к путешествиям. Хорошо гармонируют носители имени Файла с людьми своего, шестого или девятого типов.
Знаки зодиака имени Файла
Для имени Файла подходят следующие знаки зодиака:
Цвет имени Файла
Жёлтый цвет имени Файла. Люди с именем Файла, носящие желтый цвет, как показывает нумерология, солнечные и позитивные, энергичные и логичные, с ними чувствуешь себя всегда комфортно и уютно. Так как точно знаешь, что они никогда не подставят. Владельцы имени Файла обладают твёрдым характером и практичностью, что вносит некий дискомфорт в семейные отношения. Так как они не привыкли вести расточительный образ жизни и того же требуют и от своих близких людей. Положительные черты характера имени Файла – коммуникабельные, открытые и активные. Отрицательные черты характера для имени Файла – прижимистость и твердолобость.
Как правильно пишется имя Файла
В русском языке грамотным написанием этого имени является — Файла. В английском языке имя Файла может иметь следующий вариант написания — Fayla.
Видео значение имени Файла
Вы согласны с описанием и значением имени Файла? Какую судьбу, характер и национальность имеют ваши знакомые с именем Файла? Каких известных и успешных людей с именем Файла вы еще знаете? Будем рады обсудить имя Файла более подробно с посетителями нашего сайта в комментариях ниже.
Если вы нашли ошибку в описании имени, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Имена файлов, содержащие не ascii символов международного языка
Ожидается ли эта функциональность от пользователей, говорящих на японском/китайском языках?
Да.
Легко ли это сделать, или это чревато опасностью?
Есть проблемы. Если вы обслуживаете файлы напрямую или иным образом имеете имя файла в URL (например.: http://www.example.com/files/こんにちは.txt -> http://www.example.com/файлы/%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF.txt), вы обычно OK.
Но если вы обслуживаете файлы с именем файла, сгенерированным сценарием, у вас могут возникнуть проблемы. Проблема в заголовке:
Content-Disposition: attachment;filename="こんにちは.txt"
Как мы кодируем эти символы в параметр filename? Было бы неплохо, если бы мы могли просто сбросить его в UTF-8. И это будет работать в некоторых браузерах. Но не IE, который использует системную кодовую страницу для декодирования символов из заголовков HTTP. На Windows системная кодовая страница может быть cp1252 (Latin-1) для западных пользователей, или cp932 (Shift-JIS) для японцев, или что-то еще, но это никогда не будет UTF-8, и вы не можете догадаться, что это будет перед отправкой заголовка.
Скучно в стороне: что, по мнению стандарта, должно произойти? Ну, на самом деле это не так. Стандарт HTTP, RFC2616, говорит, что байты в заголовках HTTP равны ISO-8859-1, что не позволяет нам использовать японский язык. Далее говорится, что символы non-Latin-1 могут быть встроены в заголовок по правилам RFC2047, но RFC2047 явно отрицает, что его закодированные слова могут помещаться в строку в кавычках. Обычно в заголовках семейства RFC822 вы используете правила RFC2231 для встраивания Unicode символов в параметр заголовка Content-Disposition (RFC2183), и RFC2616 действительно откладывается на RFC2183 для определения этого заголовка. Но HTTP на самом деле не является протоколом семейства RFC822, и его синтаксис заголовка в любом случае не полностью совместим с семейством 822. Таким образом, стандарт-это кровавый беспорядок, и никто не знает, что делать, особенно производители браузеров, которые не обращают на него никакого внимания. Черт возьми, они даже не могут получить формат» строка в кавычках» типа » имя файла=»…», не говоря уже о кодировке символов.
Поэтому, если вы хотите динамически обслуживать файл с не-ASCII символами в имени, хитрость заключается в том, чтобы избежать отправки параметра «filename» и вместо этого сбросить нужное имя файла в trailing части URL.
Должны ли расширения файлов также быть символами международного языка?
В принципе да, расширения файлов являются лишь частью имени файла и могут содержать любой символ.
На практике на Windows я не знаю ни одного приложения, которое когда-либо использовало расширение файла, отличное от ASCII.
И последнее, на что следует обратить внимание в системах для пользователей из Восточной Азии: вы обнаружите, что они иногда печатают странные, не ASCII-версии латинских символов. Они известны как формы полной ширины и половины ширины и предназначены для того, чтобы азиаты могли вводить латинские символы, которые совпадают с квадратной сеткой, используемой их идеографическими символами (Хань и т. Д.).
Все это очень хорошо в свободном тексте, но для полей, которые вы ожидаете разобрать как латинский текст или числа, получение неожиданного целого числа » 42 «или расширения файла «. txt» может сбить вас с толку. Чтобы преобразовать эти «символы совместимости» в обычную латынь, нормализуйте свои строки до «Unicode нормальной формы NFKC», прежде чем что-либо с ними делать.
Превратить строку в допустимое имя файла?
У меня есть строка, которую я хочу использовать в качестве имени файла, поэтому я хочу удалить все символы, которые не были бы разрешены в именах файлов, используя Python.
Я бы предпочел быть строгим, чем иначе, поэтому предположим, что я хочу сохранить только буквы, цифры и небольшой набор других символов, таких как "_-.() "
. Какое самое элегантное решение?
Имя файла должно быть действительным в нескольких операционных системах (Windows, Linux и Mac OS) — это файл MP3 в моей библиотеке с названием песни в качестве имени файла, который совместно используется и резервируется между 3 машинами.
python filenames slug sanitizeПоделиться Источник Sophie Gage 17 ноября 2008 в 09:02
23 ответа
- Python-преобразование строки в имя файла
Я хотел бы составить существующее имя файла в моем каталоге на основе списка, чтобы в конечном итоге открыть его. Я знаю, что мне нужно преобразовать строку в допустимое имя файла, и я думаю, что я это делаю, но показывает следующую ошибку: IOError: [Errno 2] нет такого файла или каталога:…
- Переведите url в допустимое имя файла и обратно в url
Мне нужно хранить некоторую информацию, которая уникальна для каждого сайта, к которому обращаются мои пользователи. (На самом деле это миниатюра сайта, на который он смотрел.) эта миниатюра (файл jpeg) должна иметь имя, указывающее, какой сайт она представляет, чтобы ее можно было просмотреть…
187
Вы можете посмотреть на фреймворк Django, как они создают «slug» из произвольного текста.\w\s-]’, », value).strip().lower()) value = unicode(re.sub(‘[-\s]+’, ‘-‘, value)) # … return value
Есть еще кое-что, но я опустил это, так как речь идет не о слизнях, а о побеге.
Поделиться S.Lott 17 ноября 2008 в 12:23
118
Вы можете использовать понимание списка вместе со строковыми методами.
>>> s
'foo-bar#baz?qux@127/\\9]'
>>> "".join(x for x in s if x.isalnum())
'foobarbazqux1279'
Поделиться Unknown 17 ноября 2008 в 09:12
108
Этот подход к белому списку (т. Е. разрешающий только символы, присутствующие в valid_chars) будет работать, если нет ограничений на форматирование файлов или комбинацию допустимых символов, которые являются незаконными (например,»..»), например, то, что вы говорите, позволит использовать имя файла с именем «. txt», которое, я думаю, недопустимо для Windows. Поскольку это самый простой подход, я бы попытался удалить whitespace из valid_chars и добавить известную допустимую строку в случае ошибки, любой другой подход должен знать о том, что разрешено, где можно справиться с ограничениями именования файлов Windows и, следовательно, быть намного более сложным.
>>> import string
>>> valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
>>> valid_chars
'-_.() abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
>>> filename = "This Is a (valid) - filename%$&$ .txt"
>>> ''.join(c for c in filename if c in valid_chars)
'This Is a (valid) - filename .txt'
Поделиться Vinko Vrsalovic 17 ноября 2008 в 09:10
- Преобразование строки ввода пользователя в допустимое имя файла
Какие особые соображения необходимо учитывать при преобразовании строки пользовательского ввода в допустимое имя файла на iOS? Есть ли какие-либо доступные методы, которые могут помочь? Я не мог найти ничего очевидного на NSString или NSFileManager . Контекст позволяет пользователям сохранять…
- Как превратить имя переменной в строку в JS?
Я пытаюсь написать удобную оболочку для console.log, и я хотел бы напечатать любые переменные, переданные вместе с их содержимым. Могу ли я превратить имя переменной в строку в js?
100
В чем причина использования строк в качестве имен файлов? Если человеческая читабельность не является фактором, я бы выбрал модуль base64, который может создавать безопасные строки файловой системы. Он не будет читаемым, но вам не придется иметь дело с коллизиями, и он обратим.
import base64
file_name_string = base64.urlsafe_b64encode(your_string)
Обновление : Изменено на основе комментария Мэтью.
Поделиться Igal Serban 17 ноября 2008 в 09:12
42
Чтобы еще больше усложнить ситуацию, вы не гарантированно получите допустимое имя файла, просто удалив недопустимые символы. Поскольку разрешенные символы различаются в разных именах файлов, консервативный подход может привести к превращению допустимого имени в недопустимое. Возможно, вы захотите добавить специальную обработку для случаев, когда:
Строка содержит все недопустимые символы (оставляя вас с пустой строкой)
В итоге вы получаете строку с особым значением, например «.» или «..»
На windows зарезервированы определенные имена устройств . Например, вы не можете создать файл с именем «nul», «nul.txt» (или nul.anything на самом деле) Зарезервированные имена являются:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9
Вероятно, вы можете обойти эти проблемы, добавив к именам файлов некоторую строку, которая никогда не может привести к одному из этих случаев, и удалив недопустимые символы.
Поделиться Brian 17 ноября 2008 в 09:57
29
На Github есть хороший проект под названием python-slugify :
Устанавливать:
pip install python-slugify
Затем используйте:
>>> from slugify import slugify
>>> txt = "This\ is/ a%#$ test ---"
>>> slugify(txt)
'this-is-a-test'
Поделиться Shoham 29 апреля 2015 в 11:19
27
Точно так же, как S.-\w.]’, », s)
( См. https://github.com/django/django/blob/master/django/utils/text.py )
Поделиться cowlinator 18 октября 2017 в 00:24
21
Это решение, которое я в конечном итоге использовал:
import unicodedata
validFilenameChars = "-_.() %s%s" % (string.ascii_letters, string.digits)
def removeDisallowedFilenameChars(filename):
cleanedFilename = unicodedata.normalize('NFKD', filename).encode('ASCII', 'ignore')
return ''.join(c for c in cleanedFilename if c in validFilenameChars)
Вызов unicodedata.normalize заменяет акцентированные символы на эквивалент без акцента, что лучше, чем просто удалить их. После этого все запрещенные символы удаляются.
Мое решение не добавляет известную строку, чтобы избежать возможных запрещенных имен файлов, потому что я знаю, что они не могут возникнуть в моем конкретном формате имени файла.-a-zA-Z0-9_.() ]+’, », str))
Приведет к файловому хэндлу в /tmp/filename.txt.
Поделиться gx. 17 ноября 2008 в 09:10
7
>>> import string
>>> safechars = bytearray(('_-.()' + string.digits + string.ascii_letters).encode())
>>> allchars = bytearray(range(0x100))
>>> deletechars = bytearray(set(allchars) - set(safechars))
>>> filename = u'#ab\xa0c.$%.txt'
>>> safe_filename = filename.encode('ascii', 'ignore').translate(None, deletechars).decode()
>>> safe_filename
'abc..txt'
Он не обрабатывает пустые строки, специальные имена файлов (‘nul’, ‘con’ и т. Д.).
Поделиться jfs 17 ноября 2008 в 10:15
6
Почему бы просто не обернуть «osopen» с помощью try/except и позволить базовому OS разобраться, является ли файл допустимым?
Это кажется гораздо менее трудоемким и действительным независимо от того, какой OS вы используете.$’) badnames= re.compile(r'(aux|com[1-9]|con|lpt[1-9]|prn)(\.|$)’) def makeName(s): name= badchars.sub(‘_’, s) if badnames.match(name): name= ‘_’+name return name
Даже это не может быть гарантировано, особенно на непредвиденных OSs — например, RISC OS ненавидит пробелы и использует». » в качестве разделителя каталогов.
Поделиться bobince 17 ноября 2008 в 13:24
6
Хотя ты должен быть осторожен. Это не ясно сказано в вашем вступлении, если вы смотрите только на латинский язык. Некоторые слова могут стать бессмысленными или иметь другое значение, если вы очистите их только символами ascii.
представьте, что у вас есть «forêt poésie» (лесная поэзия), ваша дезинфекция может дать «fort-posie» (сильный + что-то бессмысленное)
Хуже, если вам придется иметь дело с китайскими иероглифами.
«下北沢» ваша система может в конечном итоге сделать» — — -«, что обречено на провал через некоторое время и не очень полезно. Поэтому, если вы имеете дело только с файлами, я бы посоветовал либо назвать их общей цепочкой, которую вы контролируете, либо сохранить символы такими, какие они есть. Для URIs примерно то же самое.
Поделиться karlcow 11 марта 2009 в 10:44
5
Я понимаю, что есть много ответов, но они в основном основаны на регулярных выражениях или внешних модулях, поэтому я хотел бы добавить свой собственный ответ. Чистая функция python, не требуется внешний модуль, не используется регулярное выражение. Мой подход заключается не в том, чтобы очистить недопустимые символы, а в том, чтобы разрешить только допустимые.
def normalizefilename(fn):
validchars = "-_.() "
out = ""
for c in fn:
if str.isalpha(c) or str.isdigit(c) or (c in validchars):
out += c
else:
out += "_"
return out
если хотите, вы можете добавить свои собственные допустимые символы в переменную validchars
в начале, например, ваши национальные буквы, которых нет в английском алфавите. Это то, что вы можете или не хотите: некоторые файловые системы, которые не работают на UTF-8, все еще могут иметь проблемы с символами, отличными от ASCII.
Эта функция предназначена для проверки правильности одного имени файла, поэтому она заменит разделители путей на_, считая их недопустимыми символами. Если вы хотите добавить это, тривиально изменить if
, чтобы включить разделитель путей ОС.
Поделиться Tuncay Göncüoğlu 11 марта 2019 в 12:21
4
Мне понравился подход python-slugify здесь, но он также удалял точки, что было нежелательно. Поэтому я оптимизировал его для загрузки чистого имени файла в s3 таким образом:
pip install python-slugify
Пример кода:
s = 'Very / Unsafe / file\nname hähä \n\r .txt'
clean_basename = slugify(os.path.splitext(s)[0])
clean_extension = slugify(os.path.splitext(s)[1][1:])
if clean_extension:
clean_filename = '{}.{}'.format(clean_basename, clean_extension)
elif clean_basename:
clean_filename = clean_basename
else:
clean_filename = 'none' # only unclean characters
Выход:
>>> clean_filename
'very-unsafe-file-name-haha.txt'
Это настолько безотказно, что работает с именами файлов без расширения и даже работает только с именами файлов с небезопасными символами (результат здесь none
).
Поделиться therealmarv 05 октября 2017 в 16:36
4
Если вы не возражаете против установки пакета, это должно быть полезно: https://pypi.org/project/pathvalidate/
От https://pypi.org/project/pathvalidate / #sanitize-a-filename :
from pathvalidate import sanitize_filename fname = "fi:l*e/p\"a?t>h|.t<xt" print(f"{fname} -> {sanitize_filename(fname)}\n") fname = "\0_a*b:c<d>e%f/(g)h+i_0.txt" print(f"{fname} -> {sanitize_filename(fname)}\n")
Выход
fi:l*e/p"a?t>h|.t<xt -> filepath.txt _a*b:c<d>e%f/(g)h+i_0.txt -> _abcde%f(g)h+i_0.txt
Поделиться Stavros 25 марта 2020 в 19:34
3
Ответ изменен на python 3.6
import string
import unicodedata
validFilenameChars = "-_.() %s%s" % (string.ascii_letters, string.digits)
def removeDisallowedFilenameChars(filename):
cleanedFilename = unicodedata.normalize('NFKD', filename).encode('ASCII', 'ignore')
return ''.join(chr(c) for c in cleanedFilename if chr(c) in validFilenameChars)
Поделиться Jean-Robin Tremblay 22 апреля 2019 в 04:48
1
Большинство из этих решений не работают.
‘/hello/world’ -> ‘helloworld’
‘/helloworld’/ -> ‘helloworld’
Как правило, это не то, что вы хотите, скажем, вы сохраняете html для каждой ссылки, вы собираетесь перезаписать html для другой веб-страницы.
Я мариную диктант, такой как:
{'helloworld':
(
{'/hello/world': 'helloworld', '/helloworld/': 'helloworld1'},
2)
}
2 представляет число, которое должно быть добавлено к следующему имени файла.
Я каждый раз просматриваю имя файла из диктанта. Если его там нет, я создаю новый, добавляя максимальное число, если это необходимо.
Поделиться robert king 16 мая 2012 в 01:04
1
Не совсем то, о чем просил OP, но это то, что я использую, потому что мне нужны уникальные и обратимые преобразования:
# p3 code
def safePath (url):
return ''.join(map(lambda ch: chr(ch) if ch in safePath.chars else '%%%02x' % ch, url.encode('utf-8')))
safePath.chars = set(map(lambda x: ord(x), '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-_ .'))
Результат «somewhat» читаем, по крайней мере, с точки зрения sysadmin.
Поделиться makeroo 12 сентября 2014 в 12:19
0
UPDATE
Все ссылки сломаны без ремонта в этом ответе 6-летней давности.
Кроме того, я бы также больше не делал этого таким образом, просто base64
кодирует или отбрасывает небезопасные символы. Python 3 пример:
import re
t = re.compile("[a-zA-Z0-9.,_-]")
unsafe = "abc∂éåß®∆˚˙©¬ñ√ƒµ©∆∫ø"
safe = [ch for ch in unsafe if t.match(ch)]
# => 'abc'
С помощью base64
вы можете кодировать и декодировать, чтобы снова получить исходное имя файла.
Но в зависимости от варианта использования вам может быть лучше создать случайное имя файла и сохранить метаданные в отдельном файле или DB.
from random import choice
from string import ascii_lowercase, ascii_uppercase, digits
allowed_chr = ascii_lowercase + ascii_uppercase + digits
safe = ''.join([choice(allowed_chr) for _ in range(16)])
# => 'CYQ4JDKE9JfcRzAZ'
ОРИГИНАЛЬНЫЙ ОТВЕТ LINKROTTEN :
Проект bobcat
содержит модуль python, который делает именно это.
Это не совсем надежно, см. Этот пост и этот ответ .
Итак, как уже отмечалось: кодировка base64
, вероятно, является лучшей идеей, если читаемость не имеет значения.
Поделиться wires 10 июля 2009 в 10:19
0
Я уверен, что это не очень хороший ответ, так как он изменяет строку, по которой он зацикливается, но, похоже, он работает нормально:
import string
for chr in your_string:
if chr == ' ':
your_string = your_string.replace(' ', '_')
elif chr not in string.ascii_letters or chr not in string.digits:
your_string = your_string.replace(chr, '')
Поделиться TankorSmash 05 мая 2012 в 03:56
Похожие вопросы:
Как сделать допустимое имя файла из произвольной строки в Javascript?
Есть ли способ преобразовать произвольную строку в допустимое имя файла в Javascript? Результат должен быть как можно ближе к исходной строке, чтобы людям было легко читать (поэтому slugify -это не…
Преобразование строки в допустимое имя переменной Java
Для инструмента генерации кода, над которым я работаю, мне нужно взять строку и сгенерировать из нее допустимое имя переменной java, но я не уверен, как это сделать лучше всего. Например: 123 this…
Превратите строку в допустимое имя файла в PHP
Я ищу библиотеку или вспомогательную функцию в PHP, которая могла бы изменить данный текст (unicode) в допустимое переносимое имя файла. Как я могу это сделать? В идеале он должен включать в себя…
Python-преобразование строки в имя файла
Я хотел бы составить существующее имя файла в моем каталоге на основе списка, чтобы в конечном итоге открыть его. Я знаю, что мне нужно преобразовать строку в допустимое имя файла, и я думаю, что я…
Переведите url в допустимое имя файла и обратно в url
Мне нужно хранить некоторую информацию, которая уникальна для каждого сайта, к которому обращаются мои пользователи. (На самом деле это миниатюра сайта, на который он смотрел.) эта миниатюра (файл…
Преобразование строки ввода пользователя в допустимое имя файла
Какие особые соображения необходимо учитывать при преобразовании строки пользовательского ввода в допустимое имя файла на iOS? Есть ли какие-либо доступные методы, которые могут помочь? Я не мог…
Как превратить имя переменной в строку в JS?
Я пытаюсь написать удобную оболочку для console.log, и я хотел бы напечатать любые переменные, переданные вместе с их содержимым. Могу ли я превратить имя переменной в строку в js?
Сохранить предложение как имя файла сервера
Я сохраняю запись набора предложений в соответствующий набор аудиофайлов. Предложения включают в себя: Ich weiß es nicht! ¡No lo sé! Ég veit ekki! Как бы вы порекомендовали мне преобразовать это…
Errno 22 недопустимый режим w+ или имя файла
IOError: [Errno 22] invalid mode (‘w+’) or filename: ‘hodor_2017-05-09_14:03:38.txt’ Поэтому у меня возникли проблемы с созданием файла, где как это name [разделитель] datetime .txt Я искал…
Как превратить строку в имя переменной
Как я могу превратить строку, скажем ‘a’, в имя переменной, для которой я могу использовать функцию append? Я пытаюсь взять входные данные, которые состоят только из маленьких букв алфавита, и…
Имена файлов
Все типы файлов имеют символьные имена. В иерархически организованных файловых системах обычно используются три типа имен -файлов: простые, составные и относительные.
Простое, или короткое, символьное имя идентифицирует файл в пределах одного каталога. Простые имена присваивают файлам пользователи и программисты, при этом они должны учитывать ограничения ОС как на номенклатуру символов, так и на длину имени. До сравнительно недавнего времени эти границы были весьма узкими. Так, в популярной файловой системе FAT длина имен ограничивались схемой 8.3 (8 символов — собственно имя, 3 символа — расширение имени), а в файловой системе s5, поддерживаемой многими версиями ОС UNIX, простое символьное имя не могло содержать более 14 символов. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлам легко запоминающиеся названия, ясно говорящие о том, что содержится в этом файле. Поэтому современные файловые системы, а также усовершенствованные варианты уже существовавших файловых систем, как правило, поддерживают длинные простые символьные имена файлов. Например, в файловых сие- • темах NTFS и FAT32, входящих в состав операционной системы Windows NT, имя файла может содержать до 255 символов.
Примеры простых имен файлов и каталогов:
quest_ul.doc
task-entran.exe
приложение к СО 254L на русском языке.doc
installable filesystem manager.doc
В иерархических файловых системах разным файлам разрешено иметь одинаковые простые символьные имена при условии, что они принадлежат разным каталогам. То есть здесь работает схема «много файлов — одно простое имя». Для одпозначной идентификации файла в таких системах используется так называемое полное имя.
Полное имя представляет собой цепочку простых символьных имен всех каталогов, через которые проходит путь от корня до данного файла. Таким образом, полное имя является составным, в котором простые имена отделены друг от друга принятым в ОС разделителем. Часто в качестве разделителя используется прямой или обратный слеш, при этом принято не указывать имя корневого каталога. На рис. 1, б два файла имеют простое имя main.exe, однако их составные имена /depart/main.ехе и /user/anna/main.exe различаются.
В древовидной файловой системе между файлом и его полным именем имеется взаимно однозначное соответствие «один файл — одно полное имя». В файловых системах, имеющих сетевую структуру, файл может входить в несколько каталогов, а значит, иметь несколько полных имен; здесь справедливо соответствие «один файл — много полных имен». В обоих случаях файл однозначно идентифицируется полным именем.
Файл может быть идентифицирован также относительным именем. Относительное имя файла определяется через понятие «текущий каталог». Для каждого пользователя в каждый момент времени один из каталогов файловой системы является текущим, причем этот каталог выбирается самим пользователем по команде ОС. Файловая система фиксирует имя текущего каталога, чтобы затем использовать его как дополнение к относительным именам для образования полного имени файла. При использовании относительных имен пользователь идентифицирует файл цепочкой имен каталогов, через которые проходит маршрут от текущего каталога до данного файла. Например, если текущим каталогом является каталог /user, то относительное имя файла /user/anna/main.exe выглядит следующим образом: anna/ main.exe.
В некоторых операционных системах разрешено присваивать одному и тому же файлу несколько простых имен, которые можно интерпретировать как псевдонимы. В этом случае, так же как в системе с сетевой структурой, устанавливается соответствие «один файл — много полных имен», так как каждому простому имени файла соответствует по крайней мере одно полное имя.
И хотя полное имя однозначно определяет файл, операционной системе проще работать с файлом, если между файлами и их именами имеется взаимно однозначное соответствие. С этой целью она присваивает файлу уникальное имя, так что справедливо соотношение «один файл — одно уникальное имя». Уникальное имя существует наряду с одним или несколькими символьными именами, присваиваемыми файлу пользователями или приложениями. Уникальное имя представляет собой числовой идентификатор и предназначено только для операционной системы. Примером такого уникального имени файла является номер индексного дескриптора в системе UNIX.
Наименование и нумерация файлов — Canon Russia
Имена, назначенные файлам изображений, различаются в зависимости от камеры EOS. Ниже представлено руководство по возможной отображаемой информации и ее значению.IMG_0001.JPG
JPG показывает, что изображение сохранено в формате JPEG. IMG — «изображение», за этой маркировкой следует четырехзначный номер. Это означает, что максимальное число файлов в папке равно 9999. После этого на карте будет создана новая папка, и нумерация начнется снова. Это означает, что вы должны быть осторожны при загрузке из нескольких папок в одно и то же место на компьютере, так как файлы могут иметь одно и то же имя. Для предотвращения случайной перезаписи изображений используйте инструмент Rename (Переименовать) в программе Canon Digital Photo Professional (DPP) — см. раздел о переименовании файлов ниже.
_MG_0001.JPG, _XXX0001.JPG
Символ подчеркивания в начале имени файла JPEG указывает на то, что изображение было снято с использованием цветового пространства Adobe RGB. При работе с sRGB символ подчеркивания не отображается. Это происходит автоматически на любой камере, где можно выбрать цветовое пространство, поэтому остальные имена файлов могут отличаться. Это позволяет программному обеспечению и пользователям без труда определять, какое цветовое пространство использовалось, и открывать изображение с правильным цветовым профилем.
XXXX0001.JPG
Профессиональные цифровые камеры EOS используют четырехзначный код камеры в качестве префикса имени файла. Этот код уникален для конкретной камеры и предустановлен компанией Canon во время производства, но на более поздних моделях камер — EOS 5D Mark IV, EOS-1D и EOS R5 — он может быть настроен фотографом и изменен по его усмотрению. К примеру, фотограф может выбрать код для конкретной фотосессии, например 21NY для съемки в Нью-Йорке в 2021 году. Подробную информацию см. в руководстве пользователя камеры. Обратите внимание, что установить нижнее подчеркивание в качестве первого символа нельзя, так как оно зарезервировано для снимков, сделанных с Adobe RGB, как указано выше.
XXXL0001.JPG, XXXN0001.JPG, XXXM0001.JPG, XXXS0001.JPG, _XXL0001.JPG, _XXN0001.JPG, _XXM0001.JPG, _XXS0001.JPG
L, M, N и S в названии файла указывают на размер файла, создаваемого камерой — L = большой, M = средний1, N = средний2, S = маленький.
CRW_0001.CRW, XXXX0001.CR2, XXXX0001.CR3
Это файлы Canon RAW для фотографий. Камеры EOS, выпущенные с 2018 года, используют более новый формат CR3.
XXXX0001.HIF
Расширение HIF указывает на то, что изображение является файлом HEIF (высокоэффективный формат файла изображения). Это более новый формат файлов с более эффективным сжатием, чем JPEG. Он имеет 10-битную схему цветопередачи, а не 8-битную, как у формата JPEG.
MVI_0000.MOV, XXXX0001.MP4
Это форматы видеофайлов. Большинство камер EOS поддерживают запись в формате MP4. Камеры, записывающие видео в формате 4K, могут использовать различные форматы контейнера, включая .MXF или .MTS.
XXXX0001.CRM
Это формат видео Canon RAW, который означает, что отснятый материал будет доступен для свободной постобработки и цветокоррекции. Некоторые камеры также используют формат .RMF.
Не удается найти страницу | Autodesk Knowledge Network
(* {{l10n_strings.REQUIRED_FIELD}})
{{l10n_strings.CREATE_NEW_COLLECTION}}*
{{l10n_strings.ADD_COLLECTION_DESCRIPTION}}
{{l10n_strings.COLLECTION_DESCRIPTION}} {{addToCollection.description.length}}/500 {{l10n_strings.TAGS}} {{$item}} {{l10n_strings.PRODUCTS}} {{l10n_strings.DRAG_TEXT}}{{l10n_strings.DRAG_TEXT_HELP}}
{{l10n_strings.LANGUAGE}} {{$select.selected.display}}{{article.content_lang.display}}
{{l10n_strings.AUTHOR}}{{l10n_strings.AUTHOR_TOOLTIP_TEXT}}
{{$select.selected.display}} {{l10n_strings.CREATE_AND_ADD_TO_COLLECTION_MODAL_BUTTON}} {{l10n_strings.CREATE_A_COLLECTION_ERROR}}что есть /. иметь в виду??
Еще 10 дискуссий, которые могут вас заинтересовать
1. Программирование
Привет всем! Заранее спасибо Я работаю над сценарием оболочки. Мне нужна помощь. Мой код: если тогда установить «подписчик» «promplan» «сопоставление» «выделенный счет» «faflistSub» «faflistAcc» «аккумулятор» \ «pam_account»; for i in 1 2 3 4 5 6 7 8; … (0 ответов)
Обсуждение начато: aealexanderraj
0 ответов
2.UNIX для чайников Вопросы и ответы
Привет всем! Заранее спасибо Я работаю над сценарием оболочки. Мне нужна помощь. Мое требование: 1) В каталоге есть некоторый набор файлов, как показано ниже OTP_UFSC_20120530000000_acc.csv OTP_UFSC_20120530000000_faf.csv OTP_UFSC_20120530000000_prom.csv … (0 ответов)
Обсуждение начато: aealexanderraj
0 ответов
3. Программирование оболочки и сценарии
Привет, гуру! Мне жаль задавать этот простой вопрос, но, честно говоря, я действительно не знаю.У меня вопрос по поводу выполнения сценария оболочки. У меня есть сценарий с именем filename.sh с разрешением -rwxr-xr-x. когда я выполняю это с . filename.sh Работает исправно. когда я выполняю это с ш … (7 ответов)
Обсуждение начато: ken002
7 ответов
4. UNIX для чайников. Вопросы и ответы
Привет всем! Мне было интересно, почему tail -n 2 filename выдает ошибку, когда мне удается выполнить аналогичную команду с head -n 2 filename SunOS {type8code0}: tail -n 2 имя_файла использование: хвост] tail] (2 ответов)
Обсуждение начато: type8code0
2 ответов
5.Программирование и сценарии оболочки
Привет всем!
У меня есть список xml-файлов. Мне нужно разделить файлы на разные файлы, когда я вижу тег .1100-200
.1200_CDMA = 1, NO = 2, САЙТ = 3.xml
B200
.1200-200
.1300_CDMA = 1, NO = 2, САЙТ = 3.xml
B200
.1300-200
.1400_CDMA = 1, NO = 2, САЙТ = 3.xml
... (3 ответа)
Обсуждение начато: natalie23
3 ответов
6. Программирование оболочки и сценарии
у меня есть несколько тысяч файлов и в подкаталогах с именами файл.46634.txt budget.75346.pdf так далее Я хочу удалить номер, но сохранить расширение. это всегда 5 цифр. Благодарю. (6 ответов)
Обсуждение началось: jason7
6 ответов
7. Программирование оболочки и сценарии
Я пытаюсь написать сценарий, который запрашивает у пользователей дату и время, а затем обрабатывает файл gzip в awk. Во время ksh-части скрипта создается другой файл, который должен обрабатываться с другим набором совпадений с шаблоном, тогда мне нужно объединить два в конце.Я застрял на части ... (6 ответов)
Обсуждение начато: timj123
6 ответов
8. Программирование оболочки и сценарии
Любой, кто может помочь: Я пытаюсь передать группу, имеющую отношение к имени файла: rpt_tsavegrp = / экспорт / легато / скрипты / $ group_savegrp_rpt. $ dat Он не перейдет в переменную. У кого-нибудь есть идеи, что я здесь делаю неправильно. Спасибо # Этот скрипт отправляет электронное письмо о том, что группа сохранения завершена .... (3 ответа)
Обсуждение началось: gzs553
3 ответов
9.Solaris
Привет всем!
Что ты имеешь в виду, когда говоришь
если
тогда <некоторые инструкции> фи
Я знаю, что сначала он проверяет, является ли
Обсуждение началось: wrapster
3 ответов
10. UNIX для чайников. Вопросы и ответы
Я хотел бы иметь псевдоним (или что-то подобное), в котором я мог бы ввести команду типа «архив» и имя файла, получить его в tar и сжать файл, так что... $ архив имя файла результаты в filename.tar.gz ... мне нужно написать сценарий для этого? (4 ответов)
Обсуждение начато: bcamp1973
4 ответов
скрытых файлов - что означает точка (.) В начале имени файла в команде терминала?
Начальная точка в именах файлов или каталогов не имеет особого значения для самого Linux. Однако некоторые утилиты (например, ls
или файловый менеджер Nautilus) рассматривают такие имена файлов как «скрытые», то есть игнорируют их в своих выводах и будут отображать их только в том случае, если вы укажете конкретную опцию.
На самом деле это произошло из-за того, что технически можно считать ошибкой. Роб Пайк, один из первых людей, которые работали над командой UNIX, рассказывает (источник):
Давным-давно, когда разрабатывалась файловая система Unix, файлы entry. и .. появились, чтобы облегчить навигацию. Я не уверен, но полагаю ... во время перезаписи Версии 2, когда файловая система стала иерархической (изначально у нее была совсем другая структура). Однако при вводе ls эти файлы появлялись, поэтому Кен или Деннис добавили в программу простой тест.Тогда это было на ассемблере, но рассматриваемый код был примерно таким:
if (name [0] == '.') Continue;
Это заявление было немного короче, чем должно было быть, то есть
.if (strcmp (name, ".") == 0 || strcmp (name, "..") == 0) continue;
но эй, это было легко.
Результатом стали две вещи.
Во-первых, был создан плохой прецедент. Многие другие ленивые программисты вносили ошибки, делая такое же упрощение.Фактические файлы, начинающиеся с точки, часто пропускаются, когда их следует считать.
Во-вторых, что намного хуже, возникла идея «скрытого» или «точечного» файла. Как следствие, более ленивые программисты начали сбрасывать файлы в домашний каталог каждого. У меня не так много вещей установлено на машине, которую я использую для ввода этого текста, но в моем домашнем каталоге около сотни файлов с точками, и я даже не знаю, что из них больше всего и нужны ли они еще. . Каждая оценка имени файла, проходящая через мой домашний каталог, замедляется из-за этого накопившегося ила.
Я почти уверен, что идея скрытого файла возникла случайно. Безусловно, это была ошибка.
В наши дни такой вид стал условностью называть их «скрытыми», даже если их содержимое вообще не скрыто. Настоящий скрытый или анонимный файл / анонимный индексный дескриптор будет реализован путем открытия файла и сохранения его файлового дескриптора открытым, но с отключением его от каталога, что делает сами данные доступными только для программы, хранящей этот файл, и его дочерние процессы (желательно разветвленные после отключения файла), поскольку дочерние процессы наследуют дескрипторы файлов.Фактически, вот как bash реализует here-docs.
Совершенно другая история, когда имя файла само является точкой .
или ..
, которые на самом деле имеют небольшую историю, и я предлагаю вам прочитать Почему текущий каталог в команде ls идентифицируется как связанный с самим собой?
file в Linux с примерами
Команда файла используется для определения типа файла. .file может быть читабельным (например,грамм. ‘ASCII text’) или типа MIME (например, ‘text / plain; charset = us-ascii’). Эта команда проверяет каждый аргумент, пытаясь разделить его на категории.
Он имеет три набора тестов, а именно:
- тест файловой системы: Этот тест основан на результате, возвращаемом системным вызовом stat . Программа проверяет, пуст ли файл или это какой-то особый файл. Этот тест вызывает печать типа файла.
- magic test: Эти тесты используются для проверки файлов с данными в определенных фиксированных форматах.
- языковой тест: Этот тест ищет определенные строки, которые могут появляться где угодно в первых нескольких блоках файла.
Синтаксис:
файл [опция] [имя файла]
Пример: Команда отображает тип файла
файл email.py имя файла.jpeg файл Invoice.pdf файл exc.ods файл videosong.mp4
Опции:
- -b, –brief: Используется для отображения только типа файла в кратком режиме.
Синтаксис:
файл -b имя_файла
Пример:
файл -b email.py файл -b input.txt файл -b os.pdf
Здесь мы видим этот тип файла без имени файла.
- * option: Команда отображает все типы файлов.
файл *
Вывод показывает все файлы в домашнем каталоге
- имя_директории / * параметр: Используется для отображения всех типов файлов файлов в конкретном каталоге.
Синтаксис:
имя_директора файла / *
Пример:
файл работа / *
Вывод показывает все файлы в определенном каталоге.
- [диапазон] * параметр: Для отображения типа файлов в определенном диапазоне.
Синтаксис:
файл [диапазон] *
Пример:
файл [a-z] * файл [a-e] *
Вывод показывает диапазон файлов.
- -c option: Вызывает контрольную распечатку проанализированной формы волшебного файла. Эта опция обычно используется вместе с флагом -m для отладки нового волшебного файла перед его установкой.
файл -c
Пример:
файл -c
- -f option: Прочитать имена файлов для проверки из namefile (по одному в строке) перед списком аргументов. Должен присутствовать либо namefile, либо хотя бы один аргумент filename; для проверки стандартного ввода используйте «-» в качестве аргумента имени файла.
Синтаксис:
файл -f -
- -F опция: Файл и тип файла разделяются : . Но мы можем изменить разделитель, используя параметр -F
Синтаксис:
файл -F "-" имя файла
Пример:
файл -F - input.txt файл -F + os.pdf
Вывод показывает, что файлы и типы файлов разделены на - и + .
- -i option: Для просмотра MIME-типа файла.
Синтаксис:
файл -i имя_файла
Пример:
файл -i input.txt файл -i os.pdf
- -N option: Не дополнять имена файлов так, чтобы они выровнялись на выходе.
файл -N *
Пример:
файл -N *
- -s опция: Для специальных файлов
Синтаксис:
файл -s имя_файла
Пример:
файл / dev / sda файл -s / dev / sda файл / dev / sda5 файл -s / dev / sda5
- имена файлов: Отображает типы файлов для нескольких файлов
Синтаксис:
имена файлов файлов
Пример:
ввод файла.txt .local Рабочий стол
- -z option: Попробуйте заглянуть внутрь сжатых файлов.
Пример:
файл -z flash.tar.gz
- –help option: Распечатать справочное сообщение и выйти.
Работа с файлами и каталогами - оболочка Unix
Обзор
Обучение: 30 мин.
Цели
Упражнения: 20 мин.
Создайте иерархию каталогов, соответствующую заданной диаграмме.
Создайте файлы в этой иерархии с помощью редактора или путем копирования и переименования существующих файлов.
Удалять, копировать и перемещать указанные файлы и / или каталоги.
Создание каталогов
Теперь мы знаем, как исследовать файлы и каталоги, но как нам их создать в первую очередь?
Шаг первый: посмотрите, где мы находимся и что у нас уже есть
Давайте вернемся в наш каталог shell-lesson-data
на рабочем столе.
и используйте ls -F
, чтобы узнать, что он содержит:
/ Пользователи / nelle / Desktop / shell-lesson-data
существ / данные / молекулы / северно-тихоокеанский круговорот / примечания.txt pizza.cfg solar.pdf запись /
Создать каталог
Давайте создадим новый каталог под названием thesis
с помощью команды mkdir thesis
(который не имеет выхода):
Как можно догадаться по названию, mkdir
означает «создать каталог».
Поскольку тезис
- относительный путь
(т.е. не имеет ведущей косой черты, например / what / ever / thesis
),
новый каталог создается в текущем рабочем каталоге:
существ / данные / молекулы / северно-тихоокеанский круговорот / примечания.txt pizza.cfg
solar.pdf диссертация / написание /
Поскольку мы только что создали каталог thesis
, в нем еще ничего нет:
Обратите внимание, что mkdir
не ограничивается созданием отдельных каталогов по одному.
Параметр -p
позволяет mkdir
создать каталог с вложенными подкаталогами.
за одну операцию:
$ mkdir -p проект / данные проект / результаты
Параметр -R
команды ls
перечислит все вложенные подкаталоги в каталоге.Давайте использовать ls -FR
, чтобы рекурсивно перечислить новую иерархию каталогов, которую мы только что создали в проект
каталог:
проект /:
данные / результаты /
проект / данные:
проект / результаты:
Два способа сделать одно и то же
Использование оболочки для создания каталога ничем не отличается от использования файлового проводника. Если вы откроете текущий каталог с помощью графического файлового менеджера вашей операционной системы, там же появится каталог
thesis
.Хотя оболочка и файловый менеджер - это два разных способа взаимодействия с файлами, сами файлы и каталоги такие же.
Хорошие имена для файлов и каталогов
Сложные имена файлов и каталогов могут сделать вашу жизнь болезненной при работе в командной строке. Здесь мы приводим несколько полезных подсказки по именам ваших файлов и каталогов.
Не используйте пробелы.
Пробелы могут сделать имя более значимым, но поскольку пробелы используются для разделения аргументов в командной строке их лучше избегать в именах файлов и каталогов.Вместо этого вы можете использовать
-
или_
(например,north-pacific-gyre /
, а неnorth-pacific-gyre /
). Чтобы проверить это, попробуйте набратьmkdir north pacific gyre
и посмотреть, какой каталог (или каталоги!) производятся при проверке с помощьюls -F
.Не начинайте имя с
–
(тире).Команды обрабатывают имена, начинающиеся с
-
, как параметры.Палочка с буквами, цифрами,
.
(точка или «точка»),–
(тире) и_
(подчеркивание).Многие другие символы имеют в командной строке особое значение. Мы узнаем о некоторых из них на этом уроке. Есть специальные символы, которые могут привести к тому, что ваша команда не будет работать как ожидается и даже может привести к потере данных.
Если вам нужно сослаться на имена файлов или каталогов, в которых есть пробелы или другие специальные символы, вы должны заключить имя в кавычки (
""
).
Создать текстовый файл
Давайте изменим наш рабочий каталог на тезис
, используя cd
,
затем запустите текстовый редактор Nano, чтобы создать файл с именем draft.txt
:
$ cd диссертация
$ nano draft.txt
Какой редактор?
Когда мы говорим «
nano
- текстовый редактор», мы действительно имеем в виду «текст»: он может работать только с обычными символьными данными, а не с таблицами, изображениями или любыми другими удобные для человека СМИ.Мы используем его в примерах, потому что это один из наименее сложные текстовые редакторы. Однако из-за этой черты он может не быть достаточно мощным или гибким для работы, которую вам нужно выполнить после этого семинара. В системах Unix (таких как Linux и macOS), многие программисты используют Emacs или Vim (оба требуют больше времени для изучения), или графический редактор, такой как Gedit. В Windows вы можете захотеть используйте Notepad ++. Windows также имеет встроенный редактор под названиемnotepad
, который можно запустить из командной строки в том же путь какnano
для целей этого урока.Независимо от того, какой редактор вы используете, вам нужно знать, где он ищет для и сохраняет файлы. Если запустить его из оболочки, он (вероятно) используйте текущий рабочий каталог в качестве местоположения по умолчанию. Если вы используете меню "Пуск" вашего компьютера, он может захотеть сохранить файлы на вашем рабочем столе или каталог документов вместо этого. Вы можете изменить это, перейдя к другой каталог при первом «Сохранить как…»
Давайте наберем несколько строк текста.
Когда мы будем довольны нашим текстом, мы можем нажать Ctrl + O (нажмите клавишу Ctrl или Control и, пока
удерживая ее, нажмите клавишу O ), чтобы записать наши данные на диск
(нас спросят, в какой файл мы хотим сохранить это:
нажмите Верните , чтобы принять предлагаемый по умолчанию черновик .О WriteOut
.
Это означает, что вы можете использовать Control-G
для получения помощи и Control-O
для сохранения вашего
файл.
nano
не оставляет никаких выходных данных на экране после выхода,
но ls
теперь показывает, что мы создали файл с именем draft.txt
:
Создание файлов другим способом
Мы видели, как создавать текстовые файлы с помощью редактора
nano
. Теперь попробуйте следующую команду:
Что сделала команда
touch
? Когда вы смотрите на свой текущий каталог с помощью проводника файлов графического интерфейса, файл появляется?Используйте
ls -l
для проверки файлов.Насколько великmy_file.txt
?Когда вы можете захотеть создать файл таким образом?
Решение
Команда
touch
создает новый файл с именемmy_file.txt
в ваш текущий каталог. Ты можно увидеть этот вновь созданный файл, набравls
в командная строка.my_file.txt
также можно просмотреть в вашем Проводник файлов GUI.Когда вы просматриваете файл с
ls -l
, обратите внимание, что размерmy_file.txt
- 0 байт. Другими словами, он не содержит данных. Если вы откроетеmy_file.txt
с помощью текстового редактора, он будет пустым.Некоторые программы сами не генерируют выходные файлы, а вместо этого требуйте, чтобы уже были созданы пустые файлы. Когда программа запускается, она ищет существующий файл, чтобы заполнить его выводом.Сенсорная команда позволяет вам эффективно сгенерировать пустой текстовый файл, который будет использоваться такими программы.
Что в имени?
Возможно, вы заметили, что все файлы Нелле названы "something dot" something », и в этой части урока мы всегда использовали расширение
.txt
. Это просто соглашение: мы можем назвать файлmythesis
или почти все, что мы хотим. Однако большинство людей используют имена, состоящие из двух частей. большую часть времени, чтобы помочь им (и их программам) рассказать о разных файлов отдельно.Вторая часть такого названия называется расширение имени файла и указывает какой тип данных содержит файл:.txt
означает простой текстовый файл,.cfg
- файл конфигурации, полный параметров для той или иной программы.png
- это изображение PNG и так далее.Это просто соглашение, хотя и важное. Файлы содержат байты: мы и наши программы должны интерпретировать эти байты в соответствии с правилами для текстовых файлов, PDF-документов, конфигурация файлы, изображения и т. д.
Присвоение имени кита PNG-изображению как
whale.mp3
почему-то не означает волшебным образом превратите это в запись песни кита, хотя она может заставить операционную систему попытаться открыть его с помощью музыкального проигрывателя когда кто-то дважды щелкает по нему.
Перемещение файлов и каталогов
Возвращение в каталог shell-lesson-data
,
компакт-диск ~ / Рабочий стол / данные-урока /
В нашем каталоге тезис
у нас есть черновик файла .txt
не слишком информативное имя,
поэтому давайте изменим имя файла на mv
,
что является сокращением от "движение":
$ mv thesis / draft.txt thesis / quotes.txt
Первый аргумент сообщает mv
, что мы «перемещаем»,
а второй - куда надо идти.
В этом случае,
мы перемещаем thesis / draft.txt
в thesis / quotes.txt
,
что имеет тот же эффект, что и переименование файла.
Конечно же, ls
показывает нам, что тезис
теперь содержит один файл с именем котировок.txt
:
Следует соблюдать осторожность при указании имени целевого файла, так как mv
будет
тихо перезаписать любой существующий файл с тем же именем, что может
привести к потере данных. Дополнительная опция, mv -i
(или mv --interactive
),
может использоваться, чтобы заставить mv
запрашивать подтверждение перед перезаписью.
Обратите внимание, что mv
также работает с каталогами.
Давайте переместим quotes.txt
в текущий рабочий каталог.Мы снова используем mv
,
но на этот раз мы будем использовать только имя каталога в качестве второго аргумента
чтобы сообщить mv
, что мы хотим сохранить имя файла
но поместите файл где-нибудь в новом месте.
(Вот почему команда называется «переместить».)
В этом случае,
используемое имя каталога - это специальное имя каталога .
, о котором мы упоминали ранее.
Эффект заключается в перемещении файла из каталога, в котором он находился, в текущий рабочий каталог. ls
теперь показывает нам, что тезис
пуст:
Как вариант, мы можем подтвердить файл котировок.txt
больше не присутствует в каталоге thesis
явно пытаясь перечислить его:
ls: нет доступа к 'thesis / quotes.txt': нет такого файла или каталога
ls
с именем файла или каталогом в качестве аргумента перечисляет только запрошенный файл или каталог.
Если файл, указанный в качестве аргумента, не существует, оболочка возвращает ошибку, как мы видели выше.
Мы можем использовать это, чтобы увидеть, что quotes.txt
теперь присутствует в нашем текущем каталоге:
Перемещение файлов в новую папку
После выполнения следующих команд, Джейми понимает, что она положила в файлы
сахарозы.dat
иmaltose.dat
в неправильную папку. Файлы должны были быть помещены в папкуraw
.$ ls -F проанализировано / сырье / $ ls -F проанализировано фруктоза.dat глюкоза.dat мальтоза.dat сахароза.dat $ cd проанализировано
Заполните пустые поля, чтобы переместить эти файлы в папку
raw /
(то есть тот, в который она их забыла положить)$ мв сахароза.dat мальтоза.dat ____ / ____
Решение
мл сахарозы.dat maltose.dat ../raw
Напомним, что
..
относится к родительскому каталогу (то есть к каталогу выше текущего) а это.
относится к текущему каталогу.
Копирование файлов и каталогов
Команда cp
работает очень похоже на mv
,
за исключением того, что он копирует файл, а не перемещает его.
Мы можем проверить, правильно ли он поступил, используя ls
.
с двумя путями в качестве аргументов - как и большинство команд Unix, ls
можно указать несколько путей одновременно:
$ cp котировки.txt thesis / quotations.txt
$ ls quotes.txt тезис / quotations.txt
quotes.txt thesis / quotations.txt
Мы также можем скопировать каталог и все его содержимое, используя
рекурсивный вариант -r
,
например для резервного копирования каталога:
$ cp -r thesis thesis_backup
Мы можем проверить результат, перечислив содержимое каталога thesis
и thesis_backup
:
$ 1 диссертация thesis_backup
диссертация:
цитаты.текст
thesis_backup:
quoteations.txt
Переименование файлов
Предположим, что вы создали в текущем каталоге текстовый файл, содержащий список статистические тесты, которые вам понадобятся для анализа ваших данных, и назвали его:
.statstics.txt
После создания и сохранения этого файла вы понимаете, что неправильно написали имя файла! Ты хочешь исправьте ошибку, какую из следующих команд вы могли бы использовать для этого?
cp statstics.txt statistics.txt
mv statstics.txt statistics.txt
мв statstics.txt.
cp statstics.txt.
Решение
- Нет. Хотя это приведет к созданию файла с правильным именем, неправильно названный файл все еще существует в каталоге и его необходимо удалить.
- Да, это сработает для переименования файла.
- Нет, точка (.) указывает, куда переместить файл, но не дает нового имени файла; идентичные имена файлов не может быть создано.
- Нет, точка (.) Указывает, куда копировать файл, но не предоставляет новое имя файла; одинаковые имена файлов не могут быть созданы.
Перемещение и копирование
Каков результат команды закрытия
ls
в последовательности, показанной ниже?$ mkdir рекомбинированный Белки $ mv.данные рекомбинированы / $ cp рекомбинированный / протеины.dat ../proteins-saved.dat $ ls
белки сохранены.dat рекомбинированы
рекомбинированный
белков.dat рекомбинированные
белки-сохраненные.dat
Решение
Мы начинаем с каталога
/ Users / jamie / data
и создаем новую папку с именемRecombined
. Вторая строка перемещает (mv
) файлбелков.dat
в новую папку (перекомпонован
). Третья строка делает копию только что перемещенного файла. Сложная часть здесь - это то, куда был скопирован файл. Напомним, что..
означает «подняться на уровень выше», поэтому скопированный файл теперь находится в/ Users / jamie
. Обратите внимание, что..
интерпретируется относительно текущего рабочего каталог, , а не , относительно расположения копируемого файла. Итак, единственное, что будет отображаться при использовании ls (в/ Users / jamie / data
), - это рекомбинированная папка.
- Нет, см. Объяснение выше.
Protein-saved.dat
находится по адресу/ Users / jamie
- Есть
- Нет, см. Объяснение выше.
протеинов.dat
находится по адресу/ Users / jamie / data / Recombined
- Нет, см. Объяснение выше.
Protein-saved.dat
находится по адресу/ Users / jamie
Удаление файлов и каталогов
Возвращаясь в каталог shell-lesson-data
,
давайте приведем в порядок этот каталог, удалив кавычки .txt
, который мы создали.
Для этого мы будем использовать команду Unix: rm
(сокращение от «удалить»):
Мы можем подтвердить, что файл исчез, используя ls
:
ls: нет доступа к «quotes.txt»: нет такого файла или каталога
Удаление навсегда
В оболочке Unix нет корзины, которую мы можем восстановить, удаленную файлы из (хотя большинство графических интерфейсов к Unix это делают). Вместо, когда мы удаляем файлы, они отключаются от файловой системы, так что их место для хранения на диске может быть переработано.Инструменты для поиска и восстановление удаленных файлов существует, но нет гарантии, что они будут работать в любой конкретной ситуации, так как компьютер может утилизировать дисковое пространство файла сразу.
Использование
rm
БезопасноЧто произойдет, если мы выполним
rm -i thesis_backup / quotations.txt
? Зачем нам нужна эта защита при использованииRM
?Решение
$ rm: удалить обычный файл thesis_backup / quotations.текст'? у
Параметр
-i
будет запрашивать перед (каждым) удалением (используйте Y для подтверждения удаления или N для хранения файла). В оболочке Unix нет корзины для мусора, поэтому все удаленные файлы исчезнут навсегда. Используя параметр-i
, у нас есть возможность проверить, что мы удаляем только файлы. что мы хотим удалить.
Если мы попытаемся удалить каталог thesis
с помощью rm thesis
,
получаем сообщение об ошибке:
rm: невозможно удалить `thesis ': это каталог
Это происходит потому, что rm
по умолчанию работает только с файлами, а не с каталогами.
rm
может удалить каталог и все его содержимое , если мы используем
рекурсивный параметр -r
, и он сделает это без каких-либо запросов на подтверждение :
Учитывая, что нет возможности получить файлы, удаленные с помощью оболочки, rm -r
следует использовать с большой осторожностью (вы можете подумать о добавлении интерактивной опции rm -r -i
).
Операции с несколькими файлами и каталогами
Часто бывает необходимо скопировать или переместить сразу несколько файлов.Это можно сделать, предоставив список отдельных имен файлов, или указав шаблон именования с помощью подстановочных знаков.
Копирование с несколькими именами файлов
В этом упражнении вы можете протестировать команды в каталоге
shell-lesson-data / data
.В приведенном ниже примере, что делает
cp
, когда задано несколько имен файлов и имя каталога?$ mkdir резервная копия $ cp amino-acid.txt animals.txt резервная копия /
В приведенном ниже примере, что делает
cp
при наличии трех или более имен файлов?аминокислот.txt animals.txt резервная копия / элементы / morse.txt pdb / planets.txt salmon.txt sunspot.txt
$ cp amino-acid.txt animals.txt morse.txt
Решение
Если указано более одного имени файла, за которым следует имя каталога (т.е. каталог назначения должен быть последним аргументом),
cp
копирует файлы в указанный каталог.Если задано три имени файла,
cp
выдает ошибку, подобную приведенной ниже, потому что он ожидает имя каталога в качестве последнего аргумента.cp: target ‘morse.txt’ не является каталогом
Использование подстановочных знаков для одновременного доступа к нескольким файлам
Подстановочные знаки
*
- это подстановочный знак , который соответствует нулю или более символам. Давайте рассмотрим каталогshell-lesson-data / Molecules
:* .pdb
соответствуетethane.pdb
,propane.pdb
и каждому файл, который заканчивается на «.pdb». С другой стороны,р *.pdb
соответствует толькоpentane.pdb
иpropane.pdb
, потому что буква «p» только спереди соответствует именам файлов, начинающимся с буквы «р».
?
также является подстановочным знаком, но соответствует ровно одному символу. Итак,? Ethane.pdb
будет соответствоватьmethane.pdb
, тогда как* ethane.pdb
соответствует какethane.pdb
, так иmethane.pdb
.Подстановочные знаки можно использовать в сочетании друг с другом например
??? ane.pdb
соответствует трем символам, за которыми следуетane.pdb
, даваяcubane.pdb ethane.pdb octane.pdb
.Когда оболочка видит подстановочный знак, она расширяет подстановочный знак, чтобы создать список совпадающих имен файлов перед запуском команды , которая была попросил о. В качестве исключения, если выражение с подстановочным знаком не соответствует любой файл, Bash передаст выражение в качестве аргумента команде как есть. Например, набрав
ls * .pdf
в каталогемолекул
(который содержит только файлы с именами, заканчивающимися на.pdb
) приводит к сообщение об ошибке, что нет файла с именемwc
иls
, видят списки имена файлов, соответствующие этим выражениям, но не подстановочные знаки самих себя. Это оболочка, а не другие программы, которые имеют дело с расширяющиеся подстановочные знаки.
Список имен файлов, соответствующих шаблону
При запуске в каталоге
Molecules
команда (ы)ls
будет произвести этот вывод?
этан.pdb methane.pdb
лс * т * ane.pdb
лс * т? Н. *
лс * т ?? ne.pdb
этан *
Решение
Решение:
3.
1.
показывает все файлы, имена которых содержат ноль или более символов (*
) затем следует букват
, затем ноль или более символов (*
), за которыми следуетane.pdb
. Это даетethane.pdb methane.pdb octane.pdb pentane.pdb
.
2.
показывает все файлы, имена которых начинаются с нуля или более символов (*
), за которыми следует письмот
, затем одиночный символ (?
), затемne.
, за которым следует ноль или более символов (*
). Это даст намoctane.pdb
иpentane.pdb
, но ничего не соответствует который заканчивается наthane.pdb
.
3.
устраняет проблемы варианта 2 путем сопоставления двух символов (??
) междуt
иne
. Это решение.
4.
показывает только файлы, начинающиеся сэтан.
.
Подробнее о подстановочных знаках
Sam имеет каталог, содержащий данные калибровки, наборы данных и описания наборы данных:
. ├── 2015-10-23 -ibration.txt ├── 2015-10-23-dataset1.текст ├── 2015-10-23-dataset2.txt ├── 2015-10-23-dataset_overview.txt ├── 2015-10-26 -ibration.txt ├── 2015-10-26-dataset1.txt ├── 2015-10-26-dataset2.txt ├── 2015-10-26-dataset_overview.txt ├── 2015-11-23 -ibration.txt ├── 2015-11-23-dataset1.txt ├── 2015-11-23-dataset2.txt ├── 2015-11-23-dataset_overview.txt ├── резервное копирование │ ├── калибровка │ └── наборы данных └── send_to_bob ├── all_datasets_created_on_a_23rd └── all_november_files
Перед тем, как отправиться в очередную производственную поездку, она хочет создать резервную копию своих данных и отправить несколько наборов данных своему коллеге Бобу.Сэм использует следующие команды для выполнения работы:
$ cp * набор данных * резервная копия / наборы данных $ cp ____calibration____ резервное копирование / калибровка $ cp 2015 -____-____ send_to_bob / all_november_files / $ cp ____ send_to_bob / all_datasets_created_on_a_23rd /
Помогите Сэму, заполнив поля.
Результирующая структура каталогов должна выглядеть так
. ├── 2015-10-23 -ibration.txt ├── 2015-10-23-dataset1.txt ├── 2015-10-23-dataset2.текст ├── 2015-10-23-dataset_overview.txt ├── 2015-10-26 -ibration.txt ├── 2015-10-26-dataset1.txt ├── 2015-10-26-dataset2.txt ├── 2015-10-26-dataset_overview.txt ├── 2015-11-23 -ibration.txt ├── 2015-11-23-dataset1.txt ├── 2015-11-23-dataset2.txt ├── 2015-11-23-dataset_overview.txt ├── резервное копирование │ ├── калибровка │ │ ├── 2015-10-23-Calibration.txt │ │ ├── 2015-10-26-Calibration.txt │ │ └── 2015-11-23 -ibration.txt │ └── наборы данных │ ├── 2015-10-23-dataset1.txt │ ├── 2015-10-23-dataset2.текст │ ├── 2015-10-23-dataset_overview.txt │ ├── 2015-10-26-dataset1.txt │ ├── 2015-10-26-dataset2.txt │ ├── 2015-10-26-dataset_overview.txt │ ├── 2015-11-23-dataset1.txt │ ├── 2015-11-23-dataset2.txt │ └── 2015-11-23-dataset_overview.txt └── send_to_bob ├── all_datasets_created_on_a_23rd │ ├── 2015-10-23-dataset1.txt │ ├── 2015-10-23-dataset2.txt │ ├── 2015-10-23-dataset_overview.txt │ ├── 2015-11-23-dataset1.txt │ ├── 2015-11-23-dataset2.текст │ └── 2015-11-23-dataset_overview.txt └── all_november_files ├── 2015-11-23 -ibration.txt ├── 2015-11-23-dataset1.txt ├── 2015-11-23-dataset2.txt └── 2015-11-23-dataset_overview.txt
Решение
$ cp * Calibration.txt резервная копия / калибровка $ cp 2015-11- * send_to_bob / all_november_files / $ cp * -23-набор данных * send_to_bob / all_datasets_created_on_a_23rd /
Организация каталогов и файлов
Джейми работает над проектом и видит, что с ее файлами не все в порядке. организовано:
анализ / фруктоза.dat raw / сахароза.dat
Файлы
fructose.dat
иSugarrose.dat
содержат выходные данные из ее данных. анализ. Какие команды, описанные в этом уроке, ей нужно выполнить чтобы приведенные ниже команды производили показанный результат?Решение
Джейми необходимо переместить файлы
fructose.dat
иSuprose.dat
в каталогпроанализированный
. Оболочка расширится *.dat для соответствия всем файлам .dat в текущем каталоге. Затем командаmv
перемещает список файлов .dat в «проанализированный» каталог.
Воспроизвести структуру папок
Вы начинаете новый эксперимент и хотите скопировать каталог структура из вашего предыдущего эксперимента, чтобы вы могли добавить новые данные.
Предположим, что предыдущий эксперимент находится в папке с именем «2016-05-18», который содержит папку
data
, которая, в свою очередь, содержит папки с именамиraw
иобработали
, которые содержат файлы данных.Цель состоит в том, чтобы скопировать структуру папок из папки2016-05-18-data
в папку с именем2016-05-20
чтобы ваша окончательная структура каталогов выглядела так:2016-05-20 / └── данные ├── обработано └── сырой
Какая из следующих команд может достичь этой цели? Что будут делать другие команды?
$ mkdir 20.05.2016 $ mkdir 2016-05-20 / данные $ mkdir 20.05.2016 / данные / обработано $ mkdir 20.05.2016 / data / raw
$ mkdir 20.05.2016 $ cd 20.05.2016 данные $ mkdir $ cd data $ mkdir raw обработано
$ mkdir 20.05.2016 / data / raw $ mkdir 20.05.2016 / данные / обработано
$ mkdir -p 2016-05-20 / data / raw $ mkdir -p 20.05.2016 / данные / обработано
$ mkdir 20.05.2016 $ cd 20.05.2016 данные $ mkdir $ mkdir raw обработано
Решение
Первые два набора команд достигают этой цели.Первый набор использует относительные пути для создания каталога верхнего уровня перед подкаталоги.
Третий набор команд выдаст ошибку, потому что поведение по умолчанию -
mkdir
не создаст подкаталог несуществующего каталога: сначала должны быть созданы папки промежуточного уровня.Четвертый набор команд достигает этой цели. Помните, что вариант
-p
, за которым следует путь из одного или нескольких каталоги,mkdir
создаст любые промежуточные подкаталоги по мере необходимости.Последний набор команд генерирует "необработанные" и "обработанные" каталоги на одном уровне. как каталог «данных».
Ключевые моменты
cp [старый] [новый]
копирует файл.
mkdir [путь]
создает новый каталог.
mv [старый] [новый]
перемещает (переименовывает) файл или каталог. X .В оболочке нет корзины для мусора: как только что-то удалено, оно действительно исчезает.
Большинство файлов имеют имена
something.extension
. Расширение не требуется и ничего не гарантирует, но обычно используется для указания типа данных в файле.В зависимости от типа выполняемой работы вам может потребоваться более мощный текстовый редактор, чем Nano.
имен файлов изображений | SERP Co
Что такое имя файла изображения?
Каждому изображению в Интернете присвоено уникальное имя - оно называется именем файла изображения.
Вот как это выглядит в формате HTML.
Вы также можете увидеть имя файла изображения при автономном сохранении на вашем компьютере.
Когда вы создаете, редактируете или сохраняете изображение, вы даете ему имя файла.
Изображения представлены в файлах различных форматов (например, PNG выше). Это не имеет отношения к названию.
Вы можете указать изображение с любым именем файла, хотя есть некоторые исключения.
Максимальная длина - 256 символов.
Вы не можете использовать символы следующих типов:
# <> [] | : {} / ~
Вы можете просмотреть имя файла любого изображения в Интернете - вот как это сделать.
Щелкните изображение правой кнопкой мыши и выберите «Проверить».
Изображение HTML должно появиться - ищите тег src - сосредоточьтесь на уникальном конце заголовка (выделено ниже.)
«онлайн-реклама»
Это имя файла изображения.
Почему имя файла изображения важно для SEO?
Потому что Google (и другие поисковые системы) не могут видеть изображения, как мы.
Видим изображение.
Они видят изображение HTML - поисковые системы видят только исходный веб-код в серверной части.
Итак, когда дело доходит до SEO для изображений, HTML - это все, что вам нужно сообщить Google.
Имя файла изображения (вместе с замещающим текстом изображения) сообщает поисковым системам, о чем именно идет речь.
Мне нравится думать о имени файла как об коротком ключевом слове для изображений.
Вы также, вероятно, задаетесь вопросом, почему изображения вообще важны для SEO.
Я назову вам две основные причины.
- Изображения могут помочь поисковым системам лучше понять, о чем ваша веб-страница в целом.
- Оптимизация изображений для SEO может помочь вам в поиске изображений.
Имя файла изображения и альтернативный текст могут помочь добавить к другим элементам HTML (например, заголовку страницы). Это дает поисковым системам лучшее представление о том, о чем конкретная веб-страница.
Вот хороший пример - статья о том, как брить собаку.
Посмотрите на это изображение.
Посмотрите на имя файла изображения и альтернативный текст.
Чем больше информации вы предоставите поисковым системам, таким как Google, тем эффективнее будут ваши усилия по поисковой оптимизации.
Ранжирование для поиска изображений также важно, потому что оно обеспечивает больше путей для трафика, чтобы добраться до вашего веб-сайта / веб-страниц.
Посмотрите, что происходит при поиске по картинке «Как побрить вашу собаку».
5 из первых 10 изображений взяты из этой статьи - это все пути к вашей веб-странице / веб-сайту.
Некоторые веб-сайты генерируют большую часть своего трафика (и доходов / продаж) за счет поиска изображений.
Веб-сайты стоковых изображений, такие как Shutterstock, - хороший тому пример.
Передовой опыт
Избегайте общих имен файлов
Первое, что вам нужно сделать, это не давать вашему изображению универсальное имя файла.
Что считается универсальным?
Вот несколько примеров общих имен файлов.
- Image01.png
- Joe.jpg
- DSC00001.JPG
- 309969513162641.jpg
. , аналогично приведенным выше примерам.
Проблема с этими общими именами файлов изображений в том, что они ничего не сообщают Google (и другим поисковым системам).
Имя файла вашего изображения (вместе с замещающим текстом) должно давать информацию о том, о чем изображение.
Имя файла, которое ничего не сообщает о контексте изображения, не имеет ценности для SEO.
Вывод: Избегайте присвоения изображению "общего" имени файла или имени файла по умолчанию.
Точно опишите изображение
Вы захотите описать свое изображение с максимальной ясностью и конкретностью.
Имя файла изображения должно указывать поисковым системам, о чем именно идет речь.
Вот несколько хороших примеров.
- Горизонт Лондонского Сити от Лондонской мэрии - октябрь 2008.jpg
- KDE Kicker config screenshot.png
- 1863 Встреча поселенцев и маори в Хокс-Бей, Новая Зеландия.jpg
- Poly без видимой вершины из center.png
Google даже подчеркивает важность «описательного» имени файла изображения в своем руководстве по передовой практике.
Имя файла может дать Google подсказку о теме изображения. Например, my-new-black-kitten.jpg лучше, чем IMG00023.JPG
В этом нет необходимости усложнять - просто опишите свое изображение кратко и точно.
Однако для точного описания некоторых изображений потребуется немного больше контекста.
Вот пример.
Изображение горизонта Лондона.
Имя файла изображения: Линия горизонта лондонского Сити от лондонской мэрии - октябрь 2008 г.jpg
Здесь представлена дополнительная информация:
- Дата создания изображения
- Позиция, из которой было снято изображение
Не забудьте рассмотреть возможность использования дефисов для разделения слов и их сохранения короткие (они будут рассмотрены ниже)
Вывод: Опишите свое изображение точно, лаконично и конкретно.
Используйте ключевое слово
Как и большинство других тегов HTML, имя файла изображения - хорошее место для размещения ключевого слова.
Когда робот Googlebot сканирует вашу веб-страницу, он просматривает ваши изображения. С точки зрения SEO это только хорошие вещи, если он найдет там ключевое слово.
Это в значительной степени относится к пункту "точное описание вашего изображения", перечисленному ранее.
Изображения, которые вы используете, должны иметь высокое отношение к теме вашей веб-страницы и, следовательно, вашим ключевым словам.
Посмотрите на этот пример - Как мыть собаку.
Посмотрите на имя файла первого изображения.
Было указано ключевое слово - можете поспорить, что это поможет Google лучше сканировать, оценивать и индексировать эту веб-страницу.
Помните, что он должен действительно соответствовать изображению. Он должен действительно описывать изображение.
Вывод: Добавьте ключевое слово в свое имя файла, если это точное описание изображения.
Избегайте переполнения ключевыми словами
Итак, вы захотите использовать ключевое слово в своем имени файла - если оно подходит - но вам нужно не переусердствовать.
Когда вы злоупотребляете ключевыми словами, это называется «наполнением ключевыми словами».
Когда поисковые системы (например, Google) замечают, что вы слишком часто использовали ключевое слово, они будут наказывать вас.
Вы даже можете деиндексировать (полностью удалить).
Поисковые системы (например, Google) со временем становятся все более и более «семантическими».
Значит, они стали логичнее, умнее. Они могут сказать, когда вы пытаетесь обмануть систему - например, набивание ключевых слов.
Исправить просто - используйте ключевые слова только тогда, когда они действительно описывают изображение.
Вывод: Используйте ключевые слова в именах файлов изображений, только если это точное описание.
Делайте это как можно короче
Как было сказано в начале этого поста, максимальная длина имени файла изображения составляет 256 символов.
Но какая именно оптимальная длина?
По правде говоря, его нет.
Некоторые имена файлов изображений состоят только из одного слова.
Хотя в некоторых может быть более 50+ символов.
Естественно, некоторые изображения (например, изображение 1863 года выше) требуют большего количества слов для точного описания.
Так что нет смысла указывать точное число.
Это отличается от, скажем, заголовка страницы. Он прочно вошел в исходный веб-код серверной части.
Пользовательский опыт здесь не играет роли.
Я по-прежнему рекомендую сделать его кратким - настолько коротким, насколько это возможно - если вы точно его опишите.
Не нужно добавлять наполнитель и пух. Не дай бог, не используйте ключевые слова. Детализируйте все важные детали, чтобы как можно точнее описать изображение.
Как бы долго это ни было.
Ни больше ни меньше.
Takeaway: Опишите свое изображение точно, самым коротким и точным образом.
Используйте дефисы (не подчеркивания)
Что касается имен файлов изображений, важно помнить, что для разделения слов используйте дефисы, а не подчеркивания.
Вы хотите, чтобы это выглядело так.
Не это.
Или это.
Когда дело доходит до HTML, дефис (-) сигнализирует поисковым системам о перерыве в словах. Они считаются «разделителем слов»."
В собственном руководстве Google по именам и типам файлов рекомендуется использовать дефисы, а не символы подчеркивания.
В них даже приводятся некоторые примеры, подобные тем, которые я приводил ранее.
Использование подчеркиваний не испортит имя файла вашего изображения, но лучше просто используйте дефисы.
Вывод: Используйте дефисы (-) для разделения слов в имени файла изображения.
Заключительные мысли
Имя файла похоже на короткое ключевое слово изображения - оно сообщает поисковым системам (например, Google) только именно то, на что он смотрит.
Имя файла изображения высокого качества может повысить рейтинг вашей веб-страницы, а также ваших изображений (для поиска изображений).
Важно знать, как лучше всего оптимизировать имя файла изображения. В этом посте мы рассмотрели все, что вам нужно знать.
Чтобы узнать больше о SEO, продолжайте читать руководства в нашем учебном центре и присоединяйтесь к нашей группе идейного сообщества здесь: SERP University.
14.4: Имена файлов и пути - Engineering LibreTexts
Файлы организованы в каталогов (также называемых «папками»).У каждой запущенной программы есть «текущий каталог», который является каталогом по умолчанию для большинства операций. Например, когда вы открываете файл для чтения, Python ищет его в текущем каталоге.
Модуль os
предоставляет функции для работы с файлами и каталогами («os» означает «операционная система»). os.getcwd
возвращает имя текущего каталога:
>>> импорт ОС >>> cwd = os.getcwd () >>> cwd '/ дом / динсдейл'
cwd
означает «текущий рабочий каталог».Результатом в этом примере является / home / dinsdale
, который является домашним каталогом пользователя с именем dinsdale
.
Строка типа '/ home / dinsdale'
, которая идентифицирует файл или каталог, называется путем .
Простое имя файла, например memo.txt
, также считается путем, но это относительный путь , поскольку он относится к текущему каталогу. Если текущий каталог - / home / dinsdale
, имя файла memo.txt
будет относиться к /home/dinsdale/memo.txt
.
Путь, начинающийся с /
, не зависит от текущего каталога; он называется абсолютным путем . Чтобы найти абсолютный путь к файлу, вы можете использовать os.path.abspath
:
>>> os.path.abspath ('memo.txt') '/home/dinsdale/memo.txt'
os.path
предоставляет другие функции для работы с именами файлов и путями. Например, os.path.exists
проверяет, существует ли файл или каталог:
>>> os.path.exists ('memo.txt') Правда
Если он существует, os.path.isdir
проверяет, является ли он каталогом:
>>> os.path.isdir ('memo.txt') Ложь >>> os.path.isdir ('/ home / dinsdale') Правда
Аналогично, os.path.isfile
проверяет, является ли это файлом.
os.listdir
возвращает список файлов (и других каталогов) в данном каталоге:
>>> os.listdir (cwd) ['музыка', 'фотографии', 'memo.txt']
Чтобы продемонстрировать эти функции, следующий пример «проходит» по каталогу, печатает имена всех файлов и рекурсивно вызывает себя для всех каталогов.
def walk (dirname): для имени в os.listdir (dirname): путь = os.path.join (имя каталога, имя) если os.path.isfile (путь): печать (путь) еще: прогулка (путь)
os.path.join
берет каталог и имя файла и объединяет их в полный путь.
Модуль os
предоставляет функцию под названием walk
, которая похожа на эту, но более универсальна. В качестве упражнения прочтите документацию и используйте ее для печати имен файлов в заданном каталоге и его подкаталогах.Вы можете скачать мое решение с http://thinkpython2.com/code/walk.py.
Использование команды scp
Использование команды scp- scp ( S ecure C o P y) - это безопасная и поддерживающая сеть версия команды удаленного копирования UNIX rcp, позволяющая передавать файлы между разными компьютерами через зашифрованную сквозную связь. Используя инфраструктуру, предоставляемую ssh, он значительно безопаснее, чем rcp и заведомо небезопасный ftp.
- Все современные компьютеры Linux, UNIX и Mac имеют клиент scp, установленный как часть базовой операционной системы, а ряд пакетов передачи файлов для Windows также поддерживает scp, включая современные версии FileZilla и популярную программу WinSCP.
Основное использование - копирование файла в удаленную систему
- Предполагается, что вы уже вошли в систему и хотите скопировать файл из текущего каталога в свой собственный домашний каталог на другом компьютере, где у вас такое же имя пользователя; набор текста
имя файла scp host:
- , где filename - это файл, который вы хотите скопировать, а host - это имя удаленного хоста, на который вы хотите его скопировать.Если ваше имя пользователя в удаленной системе отличается от вашего имени пользователя в системе, которую вы в настоящее время используете, команда:
scp имя файла имя пользователя @ хост:
- , где имя пользователя - ваше имя пользователя на удаленном хосте, позволит вам скопировать файл в удаленную систему.
- Если вы хотите скопировать файл в каталог, отличный от вашего домашнего каталога в удаленной системе, вы можете добавить путь после двоеточия ':' после имени хоста, например:
scp имя файла имя пользователя @ хост: / путь / к / другому / месту назначения / каталог
- , и вы даже можете изменить имя файла, когда он достигнет места назначения, если вы укажете новое имя файла после двоеточия или в конце пути, как в этих двух примерах:
scp старое имя файла имя пользователя @ хост: новое имя файла scp old-filename имя пользователя @ host: / path / to / other / destination / directory / new-filename
- первый пример переименовывает удаленную копию в вашем домашнем каталоге в удаленной системе, а второй пример используется, когда вы хотите скопировать файл в другое место, кроме вашего домашнего каталога, и одновременно переименовать его.
- Примеры, показанные до сих пор, предполагают, что вы в настоящее время находитесь в том же каталоге, что и файл, который хотите передать, но вы можете передавать файлы из других директорий, добавив путь перед именем файла. Вы также можете выбрать несколько файлов и, по сути, использовать все стандартные подстановочные знаки оболочки - *? [abcde] [A-D] [! A-D] {word1, word2} - как если бы вы копировали файлы на локальный компьютер.
Копирование файла из удаленной системы в локальную
- Вместо того, чтобы копировать файлы с компьютера, на котором вы сейчас вошли в удаленную систему, вы можете делать что-то наоборот, копируя из удаленной системы на локальную машину, используя немного другой синтаксис, который помещает имя удаленного хоста и имя файла впереди пункта назначения; команда:
scp host: имя файла.
- скопирует filename в ваш текущий каталог в вашей локальной системе; '.' точка буквально означает «здесь», текущий каталог, в котором вы находитесь. Итак, если вы находитесь в своем домашнем каталоге на локальном компьютере и вы даете команду выше, тогда удаленный файл переносится в ваш локальный домашний каталог. Но если вы заранее перейдете в другой каталог, например / tmp, а затем дадите эту команду, вместо этого файл будет перенесен в / tmp.
- Вместо использования точки вы, конечно, можете использовать пути, как уже описано выше, как в удаленной системе, так и в локальной целевой системе, чтобы найти файл на удаленном конце и / или поместить копию именно туда, куда вы хотите. идти.
Расширенное использование
- Более сложные варианты использования включают копирование файлов между двумя удаленными системами без необходимости входа в любую из них. Основной синтаксис:
scp user1 @ host1: имя файла user2 @ host2:
- где user1 @ host1 - это источник, из которого вы хотите скопировать filename , а user2 @ host2 - это место назначения, куда вы хотите переместить копию. Сначала вам будет предложено ввести пароль для пользователя user1 на host1, а затем второй раз для user2 на host2.Вот некоторые примеры:
scp host1: myfile host2:
- - простейшая возможная форма этой команды, где ваше имя пользователя идентично в обеих системах, и вы просто копируете из своего домашнего каталога в одной системе в другую. Здесь также можно использовать все варианты, описанные выше для указания разных имен пользователей, а также исходных и целевых путей, и тогда команда может стать довольно сложной!
Копирование файлов без пароля
- Поскольку scp использует транспортную систему SSH (Secure SHell) для установления соединения между двумя системами, участвующими в копировании файлов, большинство функций SSH также доступны для scp.Это включает в себя возможность устанавливать соединения без необходимости вводить пароль, если у вас есть закрытый ключ в вашем домашнем каталоге на компьютере, с которого вы копируете файл, и соответствующий открытый ключ в вашем домашнем каталоге на конечном компьютере. Это подробно описано на страницах SSH.
- Не забывайте , что, как и любые другие операции копирования или перемещения данных, вам потребуются соответствующие разрешения на чтение и запись для перемещения файлов таким образом. Как обычный пользователь, попытки сделать что-то вроде 'scp myfile jbloggs @ yourcomputer: / etc' потерпят неудачу, поскольку только пользователь root в удаленной системе будет иметь доступ на запись в каталог / etc.И попытки прочитать и скопировать файлы, такие как / etc / shadow, потерпят неудачу на любом конце (если вы не являетесь пользователем root), поскольку они недоступны для большинства пользователей по соображениям безопасности.
Энди Томас
unix / менеджер по исследовательским вычислениям, Математический факультет
последнее обновление: 29.04.2020
.