繁体   English   中英

python中确保字符串适合作为文件名的优雅方式?

[英]Elegant way in python to make sure a string is suitable as a filename?

我想使用用户提供的字符串作为导出的文件名,但必须确保该字符串在我的系统上是允许的作为文件名。 从我的角度来看,可以用例如“_”替换任何禁止的字符。

在这里,我找到了filenames 的禁用字符列表

使用str.replace()函数应该很容易,我只是想知道是否已经有一些东西可以做到这一点,甚至可能考虑到我使用的操作系统。

pathvalidate是一个 Python 库,用于清理/验证字符串,例如文件名/文件路径/等。

该库提供了用于路径验证的两个实用程序:

import sys
from pathvalidate import ValidationError, validate_filename

try:
    validate_filename("fi:l*e/p\"a?t>h|.t<xt")
except ValidationError as e:
    print("{}\n".format(e), file=sys.stderr)

以及用于清理路径的实用程序:

from pathvalidate import sanitize_filename

fname = "fi:l*e/p\"a?t>h|.t<xt"
print("{} -> {}".format(fname, sanitize_filename(fname)))

更好的解决方案可能是您使用生成的文件名在本地存储文件,这些文件名保证唯一且文件系统安全(例如,任何 UUID 生成器都可以)。 维护一个简单的数据库,在原始文件名和 UUID 之间映射以供以后使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM