Как удалить плохие символы пути в Python?

Function Test([string]$arg1, [string]$arg2)
{
    Write-Host "`$arg1 value: $arg1"
    Write-Host "`$arg2 value: $arg2"
}

Test "ABC" "DEF"
27
задан Martin 24 June 2009 в 09:27
поделиться

3 ответа

К сожалению, набор допустимых символов зависит от ОС и файловой системы.

  • Windows :

    • Используйте почти любой символ в текущей кодовой странице для имени, включая символы Unicode и символы в расширенном наборе символов (128–255), за исключением следующего:
      • Следующие зарезервированные символы не допускаются:
        <>: "/ \ |? *
      • Символы, целочисленные представления которых находятся в диапазоне от нуля до 31, не допускаются.
      • Любой другой символ, не разрешенный целевой файловой системой.

    Список разрешенных символы могут различаться в зависимости от ОС и локали машины, которая впервые отформатировала файловую систему.

    .NET имеет GetInvalidFileNameChars и GetInvalidPathChars , но я не знаю, как их назвать из Python.

  • Mac OS: NUL всегда исключается, "/" исключается из уровня POSIX, ":" исключается из API Apple
    • HFS +: любая последовательность неисключенных символов, которая может быть представлена ​​UTF-16 в спецификации Unicode 2.0.
    • HFS: любая последовательность неисключенных символов, представленная в MacRoman (по умолчанию) или в других кодировках, в зависимости от машины. который создал файловую систему
    • UFS: то же, что и HFS +
  • Linux:
    • собственные (UNIX-подобные) файловые системы: любая последовательность байтов, исключая NUL и "/"
    • FAT, NTFS, другие неродные файловые системы: варьируется.

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

17
ответ дан 28 November 2019 в 05:32
поделиться

Если вы используете python, попробуйте os.path , чтобы избежать кроссплатформенных проблем с путями.

1
ответ дан 28 November 2019 в 05:32
поделиться

Этот символ находится в os.sep , это будет «\» или «:», в зависимости от того, в какой системе вы находитесь.

0
ответ дан 28 November 2019 в 05:32
поделиться
Другие вопросы по тегам:

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