簡體   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