我正在尝试使用python连接url(绝对路径和相对路径(,但它没有像我预期的那样工作。
base_url = https://someurl/something/repo #values are coming from nfig.yml
filename = /home/tests/fixtures/python_app/dist/python_app-any.whl
url = urljoin(base_url, filename.split('/')[-1])
print("url:",url)
当前结果:
url: https://someurl/something/python_app-any.whl
预期成果:
url: https://someurl/something/repo/python_app-any.whl
我不想在base_url
结束时使用slash
有人可以指导我在这里提供其他可能性吗?
如果你有
filepath = "/a/b/c/d"
你可以通过os.path.basename
获得"d"
base_url = "https://someurl//something/repo" # N.B. something is wrong with this...
filepath = "/home/tests/fixtures/python_app/dist/python_app-any.whl"
resulting_url = urllib.parse.urljoin(base_url, os.path.basename(filepath))
我为 urljoin 创建了用户定义的函数,如下所示:它工作正常。
def urljoin(base_url, path):
base_url = base_url if base_url.endswith('/') else base_url + '/'
path = path[1:] if path.startswith('/') else path
return base_url + path
x=urljoin('https://hi/','hello') # (base_url, path)
print(x)
y=urljoin(x, 'test') # (base_url,filename)
print(y)
结果:
x = https://hi/hello
y = https://hi/hello/test
谁能指导我为此代码编写单元测试?