예를 들어 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 입니다.
이를 처리하는 다양한 방법이 있습니다.
-
파이썬은
r
또는 접두사가 붙은 문자열 리터럴에서 이스케이프 시퀀스를 처리하지 않습니다R
.>>> r'C:\meshes\as' 'C:\\meshes\\as' >>> print(r'C:\meshes\as') C:\meshes\as
-
Windows의 Python도 슬래시를 처리해야합니다.
-
당신은 사용할 수 있습니다
os.path.join
…>>> import os >>> os.path.join('C:', os.sep, 'meshes', 'as') 'C:\\meshes\\as'
-
… 또는 최신
pathlib
모듈>>> from pathlib import Path >>> Path('C:', '/', 'meshes', 'as') WindowsPath('C:/meshes/as')
답변
PowerShell 사용
Windows에서는 PowerShell 을 명령 줄 인터페이스로 사용하는 한/
모든 장소에서 Linux 또는 macOS처럼 경로에서 사용할 수 있습니다 . 그것은 온다 미리 설치된 Windows에서 그리고 많은 지원하는 리눅스 명령 과 같은 명령을 사용합니다.ls
Windows 명령 프롬프트 ( cmd
Windows 시작 메뉴에 입력 할 때 나타나는 프롬프트)를 사용하는 경우 \
그 안에 경로를 지정해야 합니다. /
다른 모든 장소 (코드 편집기, 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'
그런 다음 결과를 복사하십시오.