使用多种文件系统类型:Python无法正常转义?

时间:2011-09-17 09:39:15

标签: python linux fat32

简而言之,我正在尝试使用distutils.dir_util.copy_tree()将数据从ext3 fs复制到使用FAT32格式化的USB拇指驱动器。文件名往往很长并且包含有趣的字符 - 对于ext3来说,python strip / escapes很好。但是,在使用copy_tree()时,非法字符列表突然增长,因为它被抛到FAT32拇指驱动器上,而python没有逃脱并导致这样:

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

显然模式wb没问题,导致?成为非法角色。没有重写copy_tree()(或转义文件名),有没有办法轻易告诉python它正在处理不同的文件系统类型?

2 个答案:

答案 0 :(得分:2)

Python(或任何其他使用空间应用程序)不可能首先确定文件系统类型。对于简单的设置,这可能会起作用(尽管速度很慢),但在更改硬链接和软链接以及各种文件系统时不可避免地会失败 - 当FAT安装在FUSE或UnionFS上时,您会怎么做?

因此,如果您的文件系统不能包含特定字符的文件名,则必须手动删除该字符。

答案 1 :(得分:1)

不,Python不了解底层文件系统(也不应该)。它也不会逃避文件名中的任何内容 - 这是你的工作 - ?恰好是ext文件系统的有效字符。