Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用url作为文件名_Python_Encoding_Character Encoding_Decoding - Fatal编程技术网

Python 使用url作为文件名

Python 使用url作为文件名,python,encoding,character-encoding,decoding,Python,Encoding,Character Encoding,Decoding,我在python中有一个url,希望将其转换为合适的文件名。我开始时用“u”替换“/”,如下所示: def encode_url(url): return url.replace("/", "_").replace(":", "#") + ".png" 我还希望能够将文件名解码为原始url: def decode_filename(filename): n_url = "

我在python中有一个url,希望将其转换为合适的文件名。我开始时用“u”替换“/”,如下所示:

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或十六进制编码的问题是URL经常超过字符限制255。

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

当用户删除链接时,需要将其从config.json和包含图像的文件夹中删除。因此,为了删除图像文件,我需要将url编码为可反转的方法


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

哈哈,我没有想到“$”这个字符。谢谢:)事实上,除了/\:*“?”之外,您可以使用任何UTF-16字符,还有两个大问题!1.还有许多其他字符不适合文件名:2.在包含
$
\
的URL上解码失败
def encode_url(url):
    return url.replace("/", "$").replace(":", "#") + ".png"

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