[python] 파이썬의 Windows 경로

예를 들어 Windows 디렉토리를 나타내는 가장 좋은 방법은 무엇입니까 "C:\meshes\as"? 스크립트를 수정하려고 시도했지만 디렉토리를 올바르게 가져올 수 없어서 작동하지 않습니다. '\'이스케이프 문자로 작동 한다고 가정 합니까?



답변

당신은 항상 사용할 수 있습니다 :

'C:/mydir'

이것은 리눅스와 윈도우 모두에서 작동합니다. 다른 가능성은

'C:\\mydir'

일부 이름에 문제가 있으면 원시 문자열 리터럴을 사용해 볼 수도 있습니다.

r'C:\mydir'

그러나 모범 사례는 os.path항상 OS에 대한 올바른 구성을 선택하는 모듈 기능 을 사용하는 것입니다.

os.path.join(mydir, myfile)

파이썬 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"


답변

예, \파이썬에서 문자열 리터럴은 이스케이프 시퀀스의 시작을 나타냅니다. 경로에 유효한 두 문자 이스케이프 시퀀스 가 있으며 ASCII Bell 인 문자 \a로 축소됩니다 .

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

보시다시피,이 모든 예에서 리터럴의 백 슬래시와 다음 문자는 함께 그룹화되어 최종 문자열에 단일 문자를 형성합니다. 파이썬 이스케이프 시퀀스의 전체 목록은 here 입니다.

이를 처리하는 다양한 방법이 있습니다.

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

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

  3. 당신은 사용할 수 있습니다 os.path.join

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

    >>> from pathlib import Path
    >>> Path('C:', '/', 'meshes', 'as')
    WindowsPath('C:/meshes/as')

답변

PowerShell 사용

Windows에서는 PowerShell 을 명령 줄 인터페이스로 사용하는 한/ 모든 장소에서 Linux 또는 macOS처럼 경로에서 사용할 수 있습니다 . 그것은 온다 미리 설치된 Windows에서 그리고 많은 지원하는 리눅스 명령 과 같은 명령을 사용합니다.ls

Windows 명령 프롬프트 ( cmdWindows 시작 메뉴에 입력 할 때 나타나는 프롬프트)를 사용하는 경우 \그 안에 경로를 지정해야 합니다. /다른 모든 장소 (코드 편집기, Python 대화식 모드 등)에서 경로를 사용할 수 있습니다 .


답변

다른 소스 (예 : 파일 탐색기)에서 Windows 경로를 붙여 넣으려면 input()Python 콘솔에서 호출을 통해 수행 할 수 있습니다 .

>>> input()
D:\EP\stuff\1111\this_is_a_long_path\you_dont_want\to_type\or_edit_by_hand
'D:\\EP\\stuff\\1111\\this_is_a_long_path\\you_dont_want\\to_type\\or_edit_by_hand'

그런 다음 결과를 복사하십시오.


답변