Работа с несколькими типами файловых систем: Python не сможет нормально работать? - PullRequest
0 голосов
/ 17 сентября 2011

Короче говоря, я пытаюсь использовать distutils.dir_util.copy_tree() для копирования данных с ext3 fs на флэш-накопитель USB, отформатированный с использованием FAT32. Имена файлов, как правило, длинные и содержат интересные символы - которые Python прекрасно удаляет / удаляет для ext3. Однако после использования copy_tree() список недопустимых символов внезапно увеличивается, когда он выбрасывается на флэш-накопитель FAT32, из-за чего питон не выходит и в результате получается:

IOError: [Errno 22] invalid mode ('wb') or filename: u'/media/usb0/data/someweirdfile.with.dots.etc?satellite=1'

Очевидно, что режим wb в порядке, в результате ? является недопустимым символом. Если не считать переписывания copy_tree() (или экранирования имени файла), есть ли способ легко сказать python, что он работает с другим типом файловой системы?

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

Python (или любое другое приложение, использующее пространство) не может определить тип файловой системы. Это может работать (хотя и очень медленно) для простых установок, но неизбежно завершается неудачей при наличии жестких и программных ссылок и различных файловых систем - что вы делаете, когда FAT монтируется через FUSE или UnionFS?

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

1 голос
/ 17 сентября 2011

Нет, Python не знает о базовой файловой системе (и не должен).Он также ничего не скрывает в имени файла - это ваша работа - ? просто допустимый символ для файловых систем ext.

...