102

ここでは全体像を見ることができないと思います。しかし、基本的に、os.path.join通常の文字列連結の代わりに使用する理由がわかりませんか?

私は主に VBScript を使用してきたため、この関数の意味がわかりません。

4

3 に答える 3

96

Portable

Write filepath manipulations once and it works across many different platforms, for free. The delimiting character is abstracted away, making your job easier.

Smart

You no longer need to worry if that directory path had a trailing slash or not. os.path.join will add it if it needs to.

Clear

Using os.path.join makes it obvious to other people reading your code that you are working with filepaths. People can quickly scan through the code and discover it's a filepath intrinsically. If you decide to construct it yourself, you will likely detract the reader from finding actual problems with your code: "Hmm, some string concats, a substitution. Is this a filepath or what? Gah! Why didn't he use os.path.join?" :)

于 2012-12-19T02:59:27.603 に答える
4

'\' を使用する 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

ウィンドウはありませんが、「\」で同じことが必要です

于 2012-12-19T01:46:28.870 に答える
-1

OSに依存しません。パスをC:\ Whatとしてハードコーディングすると、Windowsでのみ機能します。Unix標準の「/」を使用してハードコーディングすると、Unixでのみ機能します。os.path.joinは、実行中のオペレーティングシステムを検出し、正しい記号を使用してパスを結合します。

于 2012-12-19T02:02:43.303 に答える