python工作路径位置转换_在python3中,如何将file://URL转换为一个在Linux和Windows下都能工作的代码的OS路径?...

下面的代码演示了将file://URL转换为OS路径时的问题。在import os

import pathlib

import sys

import urllib.parse

print ("sys.argv[0] = {0}".format(sys.argv[0]))

varFilename = sys.argv[0]

varFilename = os.path.abspath(varFilename)

print ("abs varFilename = {0}".format(varFilename))

varMainFolder = os.path.dirname(varFilename)

print ("varMainFolder = {0}".format(varMainFolder))

varTarget = os.path.join(varMainFolder,"test test.py")

print ("varTarget = {0}".format(varTarget))

varURL = pathlib.Path(varTarget).as_uri()

print ("varURL = {0}".format(varURL))

varPathRaw = urllib.parse.urlparse(varURL).path

print ("varPathRaw = {0}".format(varPathRaw))

varPathDecode = urllib.parse.unquote(varPathRaw)

print ("varPathDecode = {0}".format(varPathDecode))

varOSPath = os.path.normpath(varPathDecode)

print ("varOSPath = {0}".format(varOSPath))

在Linux中,以下代码打印:

^{pr2}$

注意varOSPath是一个完全有效的绝对路径。但在Windows中,代码打印:sys.argv[0] = test.py

abs varFilename = C:\mli\Junk\test.py

varMainFolder = C:\mli\Junk

varTarget = C:\mli\Junk\test test.py

varURL = file:///C:/mli/Junk/test%20test.py

varPathRaw = /C:/mli/Junk/test%20test.py

varPathDecode = /C:/mli/Junk/test test.py

varOSPath = \C:\mli\Junk\test test.py

请注意,varOSPath的绝对路径前面有一个无效的反斜杠。尝试打开具有此路径的文件将失败。我早就料到了操作系统路径.normpath()放弃驱动器规格左侧的斜杠,但它没有

我应该怎么做同样的逻辑在两个平台上给我一个有效的绝对路径?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值