似乎是os.sep返回“/”作为分隔符,我想知道我是否可以使用它来创建一个URL:
例如。获取类似https://some.domain.com/catalogs
protocol + request.get_host() + os.sep + get_file_name()
Or
答案 0 :(得分:4)
os.sep将在Windows上返回\
- 这是否是您想要的取决于您认为使用的协议,但从广义上讲,我认为os.sep isn&#39 ; t适用于不使用file://
的网址(即使它有问题)。
您可能会发现urlparse
有用:https://docs.python.org/2/library/urlparse.html
答案 1 :(得分:3)
来自文档:
操作系统用于分隔路径名的字符 组件。这是' /'对于POSIX和' \'对于Windows。注意 知道这不足以解析或连接 pathnames - 使用os.path.split()和os.path.join() - 但它确实如此 偶尔有用。也可以通过os.path。
获得
所以否,注意使用安全。
对于URI解析,拆分,加入等,您应该使用urllib.parse库。 (在python 2中称为urlparse)
答案 2 :(得分:3)
os.sep
为您提供当前系统文件系统路径的分隔符。您的系统路径和URI路径不相同。
RFC 3986给出:
路径由一系列由斜杠分隔的路径段组成 (" /")字符。
如果您有http://foo.bar.baz/a/b/c/d
之类的URI,则应使用urlsplit
将其拆分为组件并提取path
部分。然后,您可以安全地使用.split('/')
来获取此路径的各个部分,或使用'/'.join
从段构建路径(如果您知道每个段根据语法是有效的段)。
语法不允许此/
成为路径段中除分隔符以外的任何内容,请检查RFC是否更加确定。但这并不适用于整个网址,/
在其他网址部分中表示不同的内容。
与urlsplit
相反的是urlunsplit
,一旦你有了组装路径,它就可以做你想要的。
为了安全起见,您应该使用/
在使用urllib.quote('/test', '')
加入/
之前对各个路径部分进行百分比编码(请注意,第二个参数 - {{1}}不会在此处转义默认设置。)