всегда ли Python zipfile использует имена файлов posixpath независимо от операционной системы? - PullRequest
1 голос
/ 18 февраля 2011

Вероятно, это не будет иметь значения для моей текущей утилиты, но просто для хорошей практики кодирования, я хотел бы знать, можно ли получить доступ к файлам в ZIP-файле, используя модуль zipfile, используя путь в стиле POSIX, такой как subdir / file.ext независимо от того, в какой операционной системе он был сделан или в какой системе запущен мой скрипт Python. Или, если в случае Windows файл будет сохранен или доступен как subdir \ file.ext. Я прочитал pydoc для модуля и провел несколько поисков здесь и в Google, но не смог найти ничего подходящего для этого вопроса. Спасибо.

1 Ответ

3 голосов
/ 18 февраля 2011

Да.

Вы можете увидеть эти строки из модуля zipfile :

# This is used to ensure paths in generated ZIP files always use
# forward slashes as the directory separator, as required by the
# ZIP format specification.
if os.sep != "/" and os.sep in filename:
    filename = filename.replace(os.sep, "/")

И в спецификации Zip :

имя файла: (переменная)

Имя файла с необязательным относительным путем. Сохраненный путь не должен содержать диск или буква устройства или косая черта. Все слэши должен быть наклонной чертой влево / в отличие от обратная косая черта '\' для совместимости с Amiga и файловые системы UNIX и т. д.

...