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

2024-09-29 21:43:15 发布

您现在位置:Python中文网/ 问答频道 /正文

简而言之,我尝试使用distutils.dir_util.copy_tree()将数据从ext3fs复制到使用FAT32格式化的USB拇指驱动器。文件名往往很长,并且包含有趣的字符—对于ext3,python可以很好地剥离/转义这些字符。但是,在使用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它正在使用不同的文件系统类型?在


Tags: 数据tree文件名dirutil字符usb驱动器
2条回答

Python(或任何其他使用空间的应用程序)不可能首先确定文件系统类型。对于简单的设置来说,这可能是可行的(尽管非常慢),但是在硬链接和软链接以及各种文件系统发生变化的情况下,不可避免地会失败——当FAT安装在FUSE或UnionFS上时,您会怎么做?在

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

不,Python不知道底层文件系统(也不应该知道)。它也不会转义文件名中的任何内容-这是您的工作-?恰好是ext文件系统的有效字符。在

相关问题 更多 >

    热门问题