ここでは全体像を見ることができないと思います。しかし、基本的にos.path.join
、通常の文字列連結の代わりに使用する理由がわかりません。
私は主にVBScriptを使用しているので、この関数のポイントがわかりません。
ここでは全体像を見ることができないと思います。しかし、基本的にos.path.join
、通常の文字列連結の代わりに使用する理由がわかりません。
私は主にVBScriptを使用しているので、この関数のポイントがわかりません。
回答:
ファイルパス操作を一度書くだけで、多くの異なるプラットフォームで無料で機能します。区切り文字は抽象化されているため、作業が簡単になります。
そのディレクトリパスの末尾にスラッシュがあるかどうかを心配する必要はもうありません。os.path.join
必要に応じて追加します。
を使用os.path.join
すると、コードを読んでいる他の人に、ファイルパスを使用していることが明らかになります。人々はコードをすばやくスキャンして、それが本質的にファイルパスであることを発見できます。自分で作成することにした場合、読者がコードの実際の問題を見つけるのを妨げる可能性があります。「うーん、文字列の連結、置換。これはファイルパスですか、それとも何ですか?ああ!なぜ彼は使用しなかったの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を使用したWindowsでの作業の使用…
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で問題なく機能します。