[PYTHON] 파일 이름을 file : // URL로 변환합니다.
PYTHON파일 이름을 file : // URL로 변환합니다.
WeasyPrint의 공용 API에서 HTML 입력에 대한 파일 이름 (다른 유형들도 가능)을받습니다. 내장 open ()에서 작동하는 파일 이름은 모두 작동해야하지만 나중에 urllib.urlopen ()에 전달되는 file : // scheme의 URL로 변환해야합니다.
(모든 것이 내부적으로 URL 형식입니다. urlparse.urljoin ()을 사용하여 상대 URL 참조를 확인하려면 문서에 대한 '기본 URL'이 있어야합니다.)
urllib.pathname2url이 시작입니다.
강조는 광산이지만 완전한 URL이 필요합니다. 지금까지 이것은 작동하는 것 같습니다 :
def path2url(path):
"""Return file:// URL from a filename."""
path = os.path.abspath(path)
if isinstance(path, unicode):
path = path.encode('utf8')
return 'file:' + urlparse.pathname2url(path)
UTF-8은 RFC 3987 (IRI)에서 권장하는 것으로 보입니다. 하지만이 경우 (URL urllib, 결국) 어쩌면 내가 sys.getfilesystemencoding () 사용해야 사용해야합니까?
그러나 문헌에 근거하여 필자는 파일뿐만 아니라 file : // ...을 생략해야합니다 : Windows에서는 nturl2path.pathname2url ()의 결과가 이미 세 개의 슬래시로 시작됩니다.
그래서 문제는 이것을 수행하고 그것을 크로스 플랫폼으로 만드는 더 좋은 방법이 있는가하는 것입니다.
해결법
-
==============================
1.완성을 위해, Python 3.4+에서 다음을 수행해야합니다.
완성을 위해, Python 3.4+에서 다음을 수행해야합니다.
import pathlib pathlib.Path(absolute_path_string).as_uri()
-
==============================
2.나는 문서가 그것을 보증하기에 충분하다고 확신하지는 않지만, 실제로는 제대로 작동한다고 생각한다 :
나는 문서가 그것을 보증하기에 충분하다고 확신하지는 않지만, 실제로는 제대로 작동한다고 생각한다 :
import urlparse, urllib def path2url(path): return urlparse.urljoin( 'file:', urllib.pathname2url(path))
-
==============================
3.위의 @danodonovan의 댓글입니다.
위의 @danodonovan의 댓글입니다.
Python3의 경우 다음 코드가 작동합니다.
from urllib.parse import urljoin from urllib.request import pathname2url def path2url(path): return urljoin('file:', pathname2url(path))
-
==============================
4.당신을 위해 다음이 효과가 있습니까?
당신을 위해 다음이 효과가 있습니까?
from urlparse import urlparse, urlunparse urlunparse(urlparse('yourURL')._replace(scheme='file'))
from https://stackoverflow.com/questions/11687478/convert-a-filename-to-a-file-url by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬은 어떻게 트리플 쿼트 문자열 작업을합니까? (0) | 2018.11.20 |
---|---|
[PYTHON] 목록 또는 단일 정수를 인수로 처리하십시오. (0) | 2018.11.20 |
[PYTHON] URL에서 호스트 이름 변경하기 (0) | 2018.11.20 |
[PYTHON] csv를 Google 콜라에서 데이터 프레임으로 읽습니다. (0) | 2018.11.20 |
[PYTHON] Flask에 양식 배열 보내기 (0) | 2018.11.20 |