programing

문자열 연결 대신 os.path.join을 사용하는 이유는 무엇입니까?

nasanasas 2020. 11. 25. 08:02
반응형

문자열 연결 대신 os.path.join을 사용하는 이유는 무엇입니까?


나는 여기서 더 큰 그림을 볼 수 없다고 생각한다. 하지만 기본적으로 os.path.join일반 문자열 연결 대신 왜 사용하는지 모르겠습니다 .

나는 주로 VBScript를 사용했기 때문에이 기능의 요점을 이해하지 못합니다.


가지고 다닐 수 있는

파일 경로 조작을 한 번 작성 하면 다양한 플랫폼에서 무료로 작동합니다. 구분 문자가 추상화되어 작업이 더 쉬워집니다.

똑똑한

더 이상 해당 디렉토리 경로에 슬래시 가 있는지 여부에 대해 걱정할 필요가 없습니다 . os.path.join필요한 경우 추가합니다.

맑은

를 사용 os.path.join하면 파일 경로로 작업중인 코드를 다른 사람들에게 분명하게 알 수 있습니다. 사람들은 코드를 빠르게 스캔하고 본질적으로 파일 경로임을 발견 할 수 있습니다. 직접 구성하기로 결정한 경우 독자가 코드의 실제 문제를 찾는 데 방해가 될 수 있습니다. "흠, 일부 문자열 연결, 대체.이게 파일 경로입니까 아니면 무엇입니까? Gah! 왜 그가 사용하지 않았 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

창문은 없지만 '\'가 있어야합니다.


OS 독립적입니다. 경로를 C : \ Whatever로 하드 코딩하면 Windows에서만 작동합니다. Unix 표준 "/"로 하드 코딩하면 Unix에서만 작동합니다. os.path.join은 실행중인 운영 체제를 감지하고 올바른 기호를 사용하여 경로를 결합합니다.

참고 URL : https://stackoverflow.com/questions/13944387/why-use-os-path-join-over-string-concatenation

반응형