我想在我的脚本中接受一个参数,就像“mkdir”一样。如果参数只是一个名称,即helloworld
,它将使用[pwd]/helloworld
. 如果它包含可以被视为文件路径的内容,即../helloworld
, /home/x/helloworld
,~/helloworld
等,那么它将使用这些内容来解析最终路径。有这样的图书馆吗?Python 甚至能够获取创建它的 shell 的工作目录吗?
编辑:不要介意愚蠢的赏金,不确定是什么导致了之前的问题,但它现在工作正常。
我想在我的脚本中接受一个参数,就像“mkdir”一样。如果参数只是一个名称,即helloworld
,它将使用[pwd]/helloworld
. 如果它包含可以被视为文件路径的内容,即../helloworld
, /home/x/helloworld
,~/helloworld
等,那么它将使用这些内容来解析最终路径。有这样的图书馆吗?Python 甚至能够获取创建它的 shell 的工作目录吗?
编辑:不要介意愚蠢的赏金,不确定是什么导致了之前的问题,但它现在工作正常。
我想这就是你要找的:
import os
os.path.realpath(__file__)
方法如下:
os.path.realpath(os.path.expanduser(__file__))
默认情况下,realpath() 不处理 tildas,因此您需要 expanduser() 来完成脏活。
os.path.expanduser(path)
将 ~ 和 ~user 展开到用户的主目录(http://docs.python.org/2/library/os.path.html)。
os.getcwd()
将为您提供当前(当前)工作目录。
os.path.realpath(__file__)
将返回 Python 脚本所在的目录。
我认为您对os.getcwd()
功能感兴趣。它返回一个代表当前工作目录的字符串
>>> import os
>>> os.getcwd()
'/home/user/work'
或者可以os.getcwdu()
用于获取 unicode 结果。它返回一个代表当前工作目录的 unicode 字符串。
>>> import os
>>> os.getcwdu()
u'/home/user/work'
您可能要考虑使用 Unipath。有许多用于路径计算和字符串路径计算的辅助函数(子类 str 或 unicode)
这是 Unix 的原始版本:https ://github.com/mikeorr/Unipath
这个也适用于 Windows(我对其进行了一些修复):https ://github.com/sesas/Unipath
>>> import unipath
>>> p = unipath.Path()
>>> p
Path(u'.')
>>> p.absolute()
Path(u'C:\\Python27\\Lib\\idlelib')
>>> p.child('hello_world')
Path(u'.\\hello_world')
>>> p = unipath.Path(__file__) # cannot actually do this in IDLE
>>> dir(p)
['__add__', '__class__', '__contains__', '__delattr__', '__dict__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__',
'__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__',
'__module__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'__weakref__', '_formatter_field_name_split', '_formatter_parser', '_new_helper', '_walk',
'absolute', 'ancestor', 'atime', 'auto_norm', 'capitalize', 'center', 'chdir', 'child',
'chmod', 'components', 'copy', 'copy_stat', 'copy_tree', 'count', 'ctime', 'cwd', 'decode',
'encode', 'endswith', 'exists', 'expand', 'expand_user', 'expand_vars', 'expandtabs',
'ext', 'find', 'format', 'index', 'isabsolute', 'isalnum', 'isalpha', 'isdecimal',
'isdigit', 'isdir', 'isfile', 'islink', 'islower', 'ismount', 'isnumeric', 'isspace',
'istitle', 'isupper', 'join', 'lexists', 'listdir', 'ljust', 'lower', 'lstat', 'lstrip',
'mkdir', 'move', 'mtime', 'name', 'needs_update', 'norm', 'norm_case', 'parent',
'partition', 'pathlib', 'read_file', 'rel_path_to', 'relative', 'remove', 'rename',
'replace', 'resolve', 'rfind', 'rindex', 'rjust', 'rmdir', 'rmtree', 'rpartition',
'rsplit', 'rstrip', 'set_times', 'size', 'split', 'split_root', 'splitlines', 'startswith',
'stat', 'stem', 'strip', 'swapcase', 'title', 'translate', 'upper', 'walk', 'write_file',
'zfill']