Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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正确编码文件路径_Python_Url Encoding - Fatal编程技术网

使用python正确编码文件路径

使用python正确编码文件路径,python,url-encoding,Python,Url Encoding,我试图通过从字典中获取路径来打开文件。某些文件名包含逗号(,)和其他类似字符,使用这些字符时会出现“未找到此类文件错误” 例如,以下文件路径将不会打开:foo,%20bar.mp3 如果存在逗号等字符,则应将其编码为:foo%2C%20bar.mp3 有人能告诉我怎么做吗?您可能需要pathname2url Python2.x() Python3.x() 您可以使用urllib。如果使用Python 3.x,可能需要更改以下示例,但总体思路是相同的: import urllib encoded

我试图通过从字典中获取路径来打开文件。某些文件名包含逗号(,)和其他类似字符,使用这些字符时会出现“未找到此类文件错误”

例如,以下文件路径将不会打开:
foo,%20bar.mp3

如果存在逗号等字符,则应将其编码为:
foo%2C%20bar.mp3


有人能告诉我怎么做吗?

您可能需要
pathname2url

Python2.x()

Python3.x()


您可以使用urllib。如果使用Python 3.x,可能需要更改以下示例,但总体思路是相同的:

import urllib

encoded_filename = urllib.quote(filename)
f = open(encoded_filename)

为什么空格表示为
%20
而不是逗号?字符串是否应该是
foo,bar.mp3
?逗号实际上应该是%2C。但是我正在解析一个XML文件并将结果存储在一个字典中。在XML文件中,大多数路径都进行了编码,但有一个文件具有类似的模式。空格已编码,逗号未编码。奇怪,函数现在似乎在urllib.request()中。
>>> from urllib.request import pathname2url
>>> pathname2url('foo, bar.mp3')
'foo%2C%20bar.mp3'
import urllib

encoded_filename = urllib.quote(filename)
f = open(encoded_filename)
from urllib import pathname2url
pathname2url('foo,bar.mp3')