Windows 경로를 Python 문자열 리터럴로 작성하는 방법은 무엇입니까?
내가 그 길을 언급해야 한다고 가정해 보겠습니다.C:\meshes\as내가 그걸 직접 쓰려고 하면, 예를 들면,"C:\meshes\as"문제가 발생합니다. 예외가 있거나 경로가 작동하지 않습니다.이는\탈출 캐릭터로 연기하는 것입니까?경로를 어떻게 써야 합니까?
언제든지 사용할 수 있습니다.
'C:/mydir'
이것은 Linux와 Windows 모두에서 작동합니다.다른 가능성은
'C:\\mydir'
일부 이름에 문제가 있는 경우 원시 문자열 리터럴도 사용할 수 있습니다.
r'C:\mydir'
그러나 최선의 방법은 사용하는 것입니다.os.path항상 OS에 맞는 구성을 선택하는 모듈 기능:
os.path.join(mydir, myfile)
Python 3.4부터는 pathlib 모듈도 사용할 수 있습니다.이는 위의 내용과 동일합니다.
pathlib.Path(mydir, myfile)
또는
pathlib.Path(mydir) / myfile
사용os.path모듈.
os.path.join( "C:", "meshes", "as" )
또는 원시 문자열 사용
r"C:\meshes\as"
또한 경로나 파일 이름에 공백이 없어야 합니다.그리고 당신은 당신의 현에 이중 백슬래시를 사용할 수 있습니다.
"C:\\meshes\\as.jpg"
네.\Python 문자열 리터럴은 이스케이프 시퀀스의 시작을 나타냅니다.경로에 유효한 2자 이스케이프 시퀀스가 있습니다.\aASCII Bell이라는 하나의 문자로 축소됩니다.
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
다른 일반적인 탈출 시퀀스는 다음과 같습니다.\t(탭),\n(라인 피드),\r(반드시 반환):
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']
보시다시피, 이 모든 예에서 백슬래시와 리터럴의 다음 문자가 함께 그룹화되어 마지막 문자열에서 단일 문자를 형성했습니다.파이썬의 전체 탈출 순서 목록은 여기 있습니다.
이 문제를 해결하는 방법은 다양합니다.
Python은 또는 다음과 같이 접두사가 붙은 문자열 리터럴에서 이스케이프 시퀀스를 처리하지 않습니다.
>>> r'C:\meshes\as' 'C:\\meshes\\as' >>> print(r'C:\meshes\as') C:\meshes\asWindows의 Python도 슬래시를 처리해야 합니다.
당신은 ...을 사용할 수 있습니다.
>>> import os >>> os.path.join('C:', os.sep, 'meshes', 'as') 'C:\\meshes\\as'또는 최신 모듈
>>> from pathlib import Path >>> Path('C:', '/', 'meshes', 'as') WindowsPath('C:/meshes/as')
사용하다Path:
from pathlib import Path
data_folder = Path("source_data/text_files/")
file_to_open = data_folder / "raw_data.txt"
print(file_to_open.read_text())
Path에서는 경로와 같은 문자열을 사용하여 현재 OS(윈도우즈 또는 리눅스)의 모든 항목을 조정합니다.예를 들어 Linux에서는 모든 백슬래시를 슬래시로 변환하고 Windows에서는 그 반대로 변환합니다.
전체 기사:Python 3 빠른 팁: Windows, Mac 및 Linux에서 파일 경로를 쉽게 처리할 수 있는 방법
내 경험:
- 6개월 동안 사용했습니다.
os.path.join(...)로 전환됨normpath(...)그 후 마침내 로 전환되었습니다.Path(...)이 세 가지를 모두 사용한 Path는 모든 세계에서 최고입니다.
경로의 이점os.path.join(...):
- 청소기.
- 타이핑을 줄입니다.
- 경로를 더 쉽게 읽을 수 있습니다(가독성이 더 높음).
- 다음을 사용하여 두 개의 서로 다른 경로를 결합할 수 있습니다.
/(위 참조). - 좀 더 현대적인.
경의장점보다 normpath(...):
- 다음을 사용하여 경로를 조인할 수 있습니다.
/에 기대는 것보다os.path.join(...)문제를 해결하기 위해 중첩된 표준 경로 호출을 사용합니다. - 청소기.
- 타이핑을 줄입니다.
- 경로를 더 쉽게 읽을 수 있습니다(가독성이 더 높음).
- Linux와 Windows 간에 포팅할 때 버그가 발생할 가능성이 줄어듭니다.
- 좀 더 현대적인.
Python 원시 문자열은 문자열 리터럴 앞에 'r' 또는 'R'을 붙여 만듭니다.Python 원시 문자열은 백슬래시()를 리터럴 문자로 처리합니다.백슬래시를 포함하는 문자열을 사용하고 이스케이프 문자로 처리하지 않을 때 유용합니다.
수동 작업:
WindowsPath("C:\meshes\as")
또는 r 또는 R을 사용하여:
WindowsPath(r'C:/meshes/as')
언급URL : https://stackoverflow.com/questions/2953834/how-should-i-write-a-windows-path-in-a-python-string-literal
'codememo' 카테고리의 다른 글
| 기존 MVC 웹 응용 프로그램에 웹 API를 추가한 후 404 오류 발생 (0) | 2023.06.22 |
|---|---|
| 최대 연결 풀 크기 (0) | 2023.06.22 |
| DBMS_JOB 대 DBMS_Scheduler (0) | 2023.06.22 |
| Oracle 수동 제거는 어떻게 합니까? (0) | 2023.06.22 |
| Flyway: [classpath:db/migration]에서 마이그레이션 위치를 찾을 수 없습니다. (0) | 2023.06.22 |