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

本文总结了Python中获取路径的相关函数,通过实例展示了os.getcwd(), __file__, os.path.abspath(__file__), os.path.realpath(__file__), sys.argv[0], sys.path[0]在不同调用方式下的行为。在直接运行和作为模块调用时,这些函数返回的路径信息有所不同。推荐使用os.path.abspath或os.path.realpath结合__file__获取文件的绝对路径。" 52227775,4915943,HTML实现301重定向网页跳转代码,"['html', '301重定向', '网页跳转', '代码']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


其中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


返回的结果中,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时间。


 

参考网页:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值