使用 url 作为文件名

Use url as filename

我在 python 中有一个 url,我想将其转换为合适的文件名。我开始用这样的“_”替换“/”:

def encode_url(url):
    return url.replace("/", "_").replace(":", "#") + ".png"

我还希望能够将文件名解码为原始文件名url:

def decode_filename(filename):
    n_url = ""
    for i in filename:
        if i == "#":
            n_url += ":"
        elif i == "_":
            n_url += "/"
        else:
            n_url += i
    return n_url

但是,如果 url 是:

,这将不起作用

"https://example.com/example_example_example"

我需要一种编码和解码方法,它不会超过适用于任何给定 url 的字符限制。 (如果存在)

base64 或十六进制编码的问题是 urls 经常超过字符限制 255。

我正在 python 中制作一个监控器应用程序,用于记录站点的更改。我正在比较图像的变化。我将 link 中的 json 存储在 config.json 中,然后使用 encode_url() 方法将图像存储在文件夹中。

当用户删除link时,需要从config.json和包含图像的文件夹中删除。因此,我需要将 url 编码为可逆文件的方法,以便删除图像文件。

如果有比这更好的解决方案,我也会接受这个作为答案。

def encode_url(url):
    return url.replace("/", "$").replace(":", "#") + ".png"

def decode_filename(filename):
    return filename.replace('#',':').replace('$','_')