Вопрос по python, windows – Как я могу создавать файлы в Windows со встроенными слешами, используя Python?

4

После получаса поиска в Google я удивляюсь, что не могу найти способ создать файл в Windows с косой чертой в имени. Заказчик требует, чтобы имена файлов имели следующую структуру:

28.04.2012 16:07 6 781 12Q1_C125_G_04-17.pdf

Пока что я не нашел способа кодировать слэши, чтобы они стали частью имени файла, а не пути.

Какие-либо предложения

Не могли бы вы дать краткое изложение того, что вы уже пробовали, чтобы мы не читали заново? Silas Ray

Ваш Ответ

3   ответа
13

Косая черта - это один из символов, который нельзя использовать в именах файлов Windows, см.http: //msdn.microsoft.com/en-us/library/windows/desktop/aa365247 (v = vs.85) .aspx

Следующие фундаментальные правила позволяют приложениям создавать и обрабатывать допустимые имена для файлов и каталогов независимо от файловой системы:

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

Используйте обратную косую черту \) для разделения компонентов пути. Обратная косая черта разделяет имя файла от пути к нему и одно имя каталога от другого имени каталога в пути. Вы не можете использовать обратную косую черту в имени для фактического файла или каталога, потому что это зарезервированный символ, который разделяет имена на компоненты.

Используйте обратную косую черту, как требуется, как часть имен томов, например, «C: \» в «C: \ path \ file» или «\ server \ share» в «\ server \ share \ path \ file» для Универсальные именные соглашения (UNC). Дополнительные сведения об именах UNC см. В разделе «Ограничение максимальной длины пути».

Не предполагайте чувствительность к регистру. Например, считайте имена OSCAR, Oscar и oscar одинаковыми, хотя некоторые файловые системы (такие как POSIX-совместимая файловая система) могут рассматривать их как разные. Обратите внимание, что NTFS поддерживает семантику POSIX для чувствительности к регистру, но это не поведение по умолчанию. Для получения дополнительной информации см. CreateFile.

бозначения @Volume (буквы дисков) также чувствительны к регистру. Например, «D: \» и «d: \» относятся к одному и тому же тому.

Используйте любой символ в текущей кодовой странице для имени, включая символы Юникода и символы в расширенном наборе символов (128–255), за исключением следующего:

    The following reserved characters:
        < (less than)
        > (greater than)
        : (colon)
        " (double quote)
        / (forward slash)
        \ (backslash)
        | (vertical bar or pipe)
        ? (question mark)
        * (asterisk)

Integer значение ноль, иногда его называют символом ASCII NUL.

Characters, чьи целочисленные представления находятся в диапазоне от 1 до 31, за исключением альтернативных потоков данных, где эти символы разрешены. Для получения дополнительной информации о файловых потоках см. Файловые потоки.

Любой другой символ, который не разрешен целевой файловой системой.

Я бы посоветовал вам предложить вашему клиенту использовать тире в качестве разделителя даты. Silas Ray
или символ Unicode 'DIVISION SLASH' (U + 2215) ch3ka
@ ch3ka Использование символа, который визуально неотличим от недопустимого символа, который повсеместно вызовет всевозможные проблемы, - это приглашение к головным болям и бедствиям. Silas Ray
Или кто-то пытается написать еще один фрагмент кода, который пытается манипулировать вашими файлами и в течение 4 часов стучит головой о стену, потому что вы используете совершенно нестандартный нестандартный механизм. Клиент получает то, что хочет клиент, если только то, что хочет клиент, не является явно плохой идеей. Если вы не можете убедить своего клиента, что плохая идея - это плохая идея, значит, вы на самом деле не выполняете свою работу. Silas Ray
unicode в именах файлов не является «совершенно ненормальным нестандартным механизмом». Это там, это работает, это задокументировано. Я согласен с тем, что аналогичные Unicode могут вызвать путаницу, хотя. Но это верно везде и всегда, где разрешен юникод. ch3ka
7

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

Вы можете использовать юникодные возможности Windows.

Создание файла с помощью (это не косая черта, это косая черта, см.http: //www.fileformat.info/info/unicode/char/2215/index.ht) в его названии работает просто отлично, например.

Креативное мышление Junuxx
ну ... я хакер;) ch3ka
Работает и для OSX John

Похожие вопросы