python中关于路径获取的相关函数总结

python获取路径的相关函数总结

 

os.getcwd()

获取输入执行命令时所在的目录(绝对路径)

os.path[0]

获取执行的主文件所在的目录(绝对路径)

sys.argv[0]

获取输入的执行命令中的路径部分

__file__

当前文件的路径(可能是相对路径,也可能是绝对路径)

 






os.path.abspath(path)

对相对路径返回路径的绝对路径

os.path.realpath(path)

对相对路径返回路径的绝对路径

os.path.dirname(path)

返回路径中的目录部分

os.path.basename(path)

返回路径中的文件部分

os.path.split(path)

返回元组: (dirname , basename)

 

通过一个例子来查看上述函数返回的具体值:

文件路径结构:

/home/xx/www/xx/

-       call.py       [调用文件]

-       xx/    [dir]

-         echo_basedir.py      [用于输出路径的测试文件]

在测试文件echo_basedir.py中分别打出os.getcwd() , __file__ , os.path.abspath(__file__) ,os.path.realpath(__file__) , sys.argv[0] , sys.path[0]的值。

在调用文件call.py中会调用echo_basedir.py 。

使用两种方式测试:

一种是直接输入命令调用echo_basedir.py 打印结果;

一种是通过输入命令运行call.py来将echo_basedir.py作为一个模块调用。

在路径/home/xx/www/xx/下输入命令。

1.      测试第一种情况:

输入命令:python xx/echo_basedir.py

python中关于路径获取的相关函数总结_第1张图片

其中os.getcwd()结果为/home/xx/www/xx ,为当前输入命令的路径

__file__返回的是echo_basedir.py的相对当前路径的相对路径;在分别使用os.path.realpath() 和os.path.abspath()后返回绝对路径。

sys.argv[0]返回的是命令中的路径部分,即xx/echo_basedir.py。可以看到将sys.argv[0]和之前的os.getcwd()拼凑起来就是绝对路径啦。

sys.path[0]返回了文件的所在目录的绝对路径。

2.      测试第二种情况:

输入命令: python call.py

python中关于路径获取的相关函数总结_第2张图片

返回的结果中,os.getcwd()没有变化,依然是当前输入命令所在的目录;

__file__的结果发生了变化,首先返回的是一个绝对路径,其次从文件名中看到时.pyc文件,预编译文件;

sys.argv[0]仍然是命令中的路径部分;

sys.path[0]是call.py主文件所在的路径了,而不是子模块的路径。尽管是在子模块中使用的该参数。

由上,可知如果想要获取当前文件所在的路径,最稳定的即是在__file__的基础上使用os.path.abspath或os.path.realpath修饰来获取文件所在的路径。当然,如果只需要路径中的目录部分,可以使用os.path.dirname()取目录,当然可以使用os.path.basename()获取文件名,也可以使用os.path.split()来同时获得这两个值组成的元组。

 

附上os.path下其他的函数:

文件检测

 

os.path.exists()

 

os.path.isdir()

 

os.path.isfile()

 

路径规则化

 

os.path.normcase()

在windows下有效果;


包括大写->小写、分隔符的规范

os.path.normpath()

文件路径的规范,如:

/home/path/../target -> /home/target

对于拼接的路径有一定的规范作用

路径分割

 

os.path.splitdrive()

在windows下有效


linux下返回的元组第一个为空字符

os.path.splitext()

分割扩展名


文件信息

 

os.path.getsize()

字节为单位

os.path.getmtime() / os.path.getatime()

获取据文件最后修改的时间。返回的是计算机中起始时刻过去的秒数。是一个浮点数。

可以使用time.ctime将这个浮点数转换为UTC时间。

python中关于路径获取的相关函数总结_第3张图片

 

参考网页:

1.http://wangwei007.blog.51cto.com/68019/1104940   python os.path模块常用方法详解

2.http://www.elias.cn/Python/GetPythonPath?from=Develop.GetPythonPath   如何获得Python脚本所在目录的位置

你可能感兴趣的:(python中关于路径获取的相关函数总结)