回答:
os.path.isabs
True
パスが絶対パスの場合は戻り、False
そうでない場合は戻ります。ドキュメントには、Windowsで動作することが記載されています(個人的にはLinuxで動作することを確認できます)。
os.path.isabs(my_path)
そして、本当に必要なのが絶対パスである場合、それがそうであるかどうかを確認するためにわざわざチェックしないでくださいabspath
。
import os
print os.path.abspath('.')
を使用しos.path.isabs
ます。
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
実際、私は上記の答えのどれも本当の問題に対処していないと思います:クロスプラットフォームパス。os.pathは、OSに依存するバージョンの「パス」ライブラリをロードします。したがって、解決策は関連する(OS)パスライブラリを明示的にロードすることです。
import ntpath
import posixpath
ntpath.isabs("Z:/a/b/c../../H/I/J.txt")
True
posixpath.isabs("Z:/a/b/c../../H/I/J.txt")
False
def path_is_abs(p): return (len(p) > 1) and (p[0] == '/' or p[1] == ':')
python 3.4
pathlibから利用できます。
In [1]: from pathlib import Path
In [2]: Path('..').is_absolute()
Out[2]: False
In [3]: Path('C:/').is_absolute()
Out[3]: True
In [4]: Path('..').resolve()
Out[4]: WindowsPath('C:/the/complete/path')
In [5]: Path('C:/').resolve()
Out[5]: WindowsPath('C:/')
Path('\tmp').is_absolute()
正しく与えるFalse
一方でos.path.isabs('\tmp')
、正しく与えませんTrue
。(\tmp
Windowsでは絶対パスであると主張する人もいますが、これは絶対パスの非常に役に立たない定義にのみ当てはまります。)
os.path.isabs('c:\\')
Falseを返します。