codememo

Windows 경로를 Python 문자열 리터럴로 작성하는 방법은 무엇입니까?

tipmemo 2023. 6. 22. 21:54
반응형

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']

보시다시피, 이 모든 예에서 백슬래시와 리터럴의 다음 문자가 함께 그룹화되어 마지막 문자열에서 단일 문자를 형성했습니다.파이썬의 전체 탈출 순서 목록은 여기 있습니다.

이 문제를 해결하는 방법은 다양합니다.

  1. Python은 또는 다음과 같이 접두사가 붙은 문자열 리터럴에서 이스케이프 시퀀스를 처리하지 않습니다.

    >>> r'C:\meshes\as'
    'C:\\meshes\\as'
    >>> print(r'C:\meshes\as')
    C:\meshes\as
    
  2. Windows의 Python도 슬래시를 처리해야 합니다.

  3. 당신은 ...을 사용할 수 있습니다.

    >>> import os
    >>> os.path.join('C:', os.sep, 'meshes', 'as')
    'C:\\meshes\\as'
    
  4. 또는 최신 모듈

    >>> 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

반응형