programing

Python의 Windows 경로

firstcheck 2022. 10. 8. 08:54
반응형

Python의 Windows 경로

예를 들어 Windows 디렉토리를 표시하는 가장 좋은 방법은 무엇입니까?"C:\meshes\as"스크립트를 수정하려고 했지만 디렉토리가 올바르게 표시되지 않아 작동하지 않습니다.'\'탈옥 캐릭터로 연기?

언제든지 사용할 수 있습니다.

'C:/mydir'

이는 Linux와 Windows 모두에서 작동합니다.다른 장점은

'C:\\mydir'

이름에 문제가 있는 경우 raw string literal을 사용해 보십시오.

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"

네.\in Python string literals는 이스케이프 시퀀스의 시작을 나타냅니다.경로에는 유효한 2글자 이스케이프 시퀀스가 있습니다.\aASCII 벨이라는1개문자로 정리되어 있습니다.

>>> '\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(Windows 또는 Linux)의 모든 항목을 조정합니다.예를 들어 Linux에서는 모든 백슬래시를 슬래시로 변환하고 Windows에서는 그 반대로 변환합니다.

전문 기사:Python 3 퀵팁: Windows, Mac 및 Linux에서 파일 경로를 쉽게 처리할 수 있는 방법


내 경험:

  • 나는 6개월 동안 그것을 사용했다.os.path.join(...)로 전환되었습니다.normpath(...)마침내 로 전환했다.Path(...)이 세 가지를 모두 사용해 본 패스는 세계 최고입니다.

패스의 장점os.path.join(...):

  • 깨끗하다.
  • 타이핑이 적습니다.
  • 경로를 보다 쉽게 읽을 수 있습니다(가독성이 향상됨).
  • 다른 할 수 있습니다./(동료)
  • 좀 더 모던하게.

'' 'normpath(...):

  • 를 사용하여 할 수 ./로 rather rather rather rather rather rather rather rather rather 로 돌아갈 필요 os.path.join(...)규범 경로
  • 깨끗하다.
  • 타이핑이 적습니다.
  • 경로를 보다 쉽게 읽을 수 있습니다(가독성이 향상됨).
  • Linux와 Windows 간에 포팅할 때 버그가 발생할 가능성이 적습니다.
  • 좀 더 모던하게.

Python raw 문자열은 문자열 리터럴 앞에 'r' 또는 'R'을 붙여서 생성됩니다.Python 원시 문자열은 백슬래시()를 리터럴 문자로 처리합니다.이것은 백슬래시를 포함하는 문자열을 가지고 이스케이프 문자로 취급하지 않을 때 유용합니다.

다음과 같은 수동 작업:

WindowsPath("C:\meshes\as")

또는 r 또는 R을 사용하여 다음을 수행합니다.

WindowsPath(r'C:/meshes/as')

언급URL : https://stackoverflow.com/questions/2953834/windows-path-in-python

반응형