나는 여기서 더 큰 그림을 볼 수 없다고 생각한다. 하지만 기본적으로 os.path.join
일반적인 문자열 연결 대신 왜 사용하는지 모르겠습니다 .
나는 주로 VBScript를 사용했기 때문에이 기능의 요점을 이해하지 못합니다.
나는 여기서 더 큰 그림을 볼 수 없다고 생각한다. 하지만 기본적으로 os.path.join
일반적인 문자열 연결 대신 왜 사용하는지 모르겠습니다 .
나는 주로 VBScript를 사용했기 때문에이 기능의 요점을 이해하지 못합니다.
답변:
파일 경로 조작을 한 번 작성 하면 다양한 플랫폼에서 무료로 작동합니다. 구분 문자가 추상화되어 작업이 더 쉬워집니다.
더 이상 해당 디렉토리 경로에 슬래시 가 있는지 여부에 대해 걱정할 필요가 없습니다 . os.path.join
필요한 경우 추가합니다.
을 사용 os.path.join
하면 파일 경로로 작업중인 코드를 다른 사람들에게 분명하게 알 수 있습니다. 사람들은 코드를 빠르게 스캔하고 본질적으로 파일 경로임을 발견 할 수 있습니다. 직접 구성하기로 결정하면 독자가 코드의 실제 문제를 찾는 데 방해가 될 수 있습니다. "흠, 일부 문자열 연결, 대체.이 파일 경로 또는 무엇입니까? Gah! 왜 그가 사용하지 않았 os.path.join
습니까?" :)
os.path.join
경우 올바른 이유로 사용하십시오. os.path.join 주변에는 많은화물 컬트가 있습니다. "어리석은 일관성은 작은 마음의 홉 고블린입니다."
'\'가있는 Windows 및 '/'가있는 Unix (Mac OS X 포함)에서 작동합니다.
posixpath의 경우 여기에 간단한 코드가 있습니다.
In [22]: os.path.join??
Type: function
String Form:<function join at 0x107c28ed8>
File: /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py
Definition: os.path.join(a, *p)
Source:
def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded."""
path = a
for b in p:
if b.startswith('/'):
path = b
elif path == '' or path.endswith('/'):
path += b
else:
path += '/' + b
return path
창문은 없지만 '\'가 있어야합니다.
/
CPython과와 윈도우, ...에 작품
OS 독립적입니다. 경로를 C : \ Whatever로 하드 코딩하면 Windows에서만 작동합니다. Unix 표준 "/"로 하드 코딩하면 Unix에서만 작동합니다. os.path.join은 실행중인 운영 체제를 감지하고 올바른 기호를 사용하여 경로를 결합합니다.
If you hardcode them with the Unix standard "/" they will only work on Unix.
그건 틀렸어요. "/"는 Windows 및 linux / unix / bsd / darwin에서 잘 작동합니다.