Разделители путей Python ZipFile

Если я распаковываю Zip-файл с помощью библиотеки Python ZipFile, где файл был создан в Windows, но мой код работает в Unix-подобном, всегда ли разделители путей будут в стиле Unix?


person Joe    schedule 18.11.2011    source источник
comment
Похоже, так и должно быть, поскольку он не хранится в виде строки. Я очень на это надеюсь :)   -  person fncomp    schedule 18.11.2011
comment
Вы бы на это надеялись! Но когда вы имеете дело с компьютерами, надежда не имеет ничего общего ...   -  person Joe    schedule 18.11.2011


Ответы (1)


Внутри ZipFile хранятся косые черты в соответствии с требованиями спецификации zip-файла.

Внешне они переводятся с использованием os.sep, поэтому он будет соответствовать тому, что обычно ожидается на данная платформа.

Ссылки на код:

person Raymond Hettinger    schedule 18.11.2011
comment
Спасибо! Я предположил, что это правда, но иметь доказательства - хорошо. - person Joe; 18.11.2011
comment
Обратите внимание, что это преобразование применяется только при создании записи в ZIP-архиве. При доступе к существующим элементам (например, с zip_file.read('dir/file.txt')) всегда должны использоваться косые черты. - person Feuermurmel; 29.08.2012
comment
+1 за ссылку на спецификацию zip файла. Спасибо!!! Вот соответствующий раздел: 4.4.17 имя файла: (Переменная) 4.4.17.1 Имя файла с необязательным относительным путем. Сохраненный путь НЕ ДОЛЖЕН содержать буквы диска или устройства, а также косую черту в начале. Все косые черты ДОЛЖНЫ быть прямыми косыми чертами '/' в отличие от обратных косых черт '\' для совместимости с файловыми системами Amiga и UNIX и т. Д. Если ввод поступил со стандартного ввода, поле имени файла отсутствует. - person Howard Rubin; 30.06.2015