os.path 常见函数小结

1.os.path.join()

 用于路径拼接文件路径,可以传入多个参数。

import os

print os.path.join('111','222','333')  #111/222/333
print os.path.join('/111','222','333') #/111/222/333
print os.path.join('/111','/222','333') #/222/333

print os.path.join('/111','/222','/333') #/333

print os.path.join('111','222','/333') #/333
print os.path.join('111','/222','/333') #/333
print os.path.join('/111','/222','/333') #/333

print os.path.join('111/','222','333') #111/222/333
print os.path.join('111/','222/','333') #111/222/333
print os.path.join('111/','222/','333/') #111/222/333/

print os.path.join('111','222','333/') #111/222/333/
print os.path.join('111','222/','333/') #111/222/333/
print os.path.join('111/','222/','333/') #111/222/333/

print os.path.join('111','222','./333') #111/222/./333

具体可见: os.path.join()函数_cttcss的博客-CSDN博客

2.os.path.dirname()

用于返回文件上一层目录的路径

import os
print(os.path.dirname("E:/cttcss/helloworld.py")) #E:/cttcss
print(os.path.dirname("E:/cttcss")) #E:/

注:不会判断输入路径下的文件是否存在 ,其本质上只是返回最后一个'/'前的字符串,如果没有‘/’,且第一个‘:’前只有一个字符,则返回这个字符,不然返回空值。

print(os.path.dirname("EE/")) #EE
print(os.path.dirname("E:/")) #E:/
print(os.path.dirname("E:E:")) #E:
print(os.path.dirname("EE:")) #
print(os.path.dirname("EE")) #

os.path.dirname(__file__)

返回当前文件上一层目录的路径

注:__file__ 返回的是当前文件的绝对路径


3. os.path.abspath

用于获取指定文件或目录的绝对路径

但在实际应用中返回的不一定是绝对路径

os.path.abspath源码

try:
from nt import _getfullpathname  #nt是提供访问windows操作系统的接口.
except ImportError: # not running on Windows - mock up something sensible  如果导入失败
    def abspath(path):
        """Return the absolute version of a path."""
        if not isabs(path):  #如果不是绝对路径
            if isinstance(path, unicode):#判断编码类型是不是unicode
                cwd = os.getcwdu()  #是用getcwdu
            else:
                cwd = os.getcwd()  #不是用getcwd
            path = join(cwd, path) #把path和当前工作路径连接起来.
        return normpath(path)

else:  # use native Windows method on Windows
    def abspath(path):
        """Return the absolute version of a path."""

        if path: # Empty path must return current working directory.
            try:
                path = _getfullpathname(path)
            except WindowsError:
                pass # Bad path - return unchanged.
        elif isinstance(path, _unicode):
            path = os.getcwdu()
        else:
            path = os.getcwd()
        return normpath(path)

    os.path.abspath取决于os.getcwd,如果是一个绝对路径,就返回,如果不是绝对路径,根据编码执行getcwd/getcwdu.然后把path和当前工作路径连接起来。

os.getcwd():

用于获取当前工作目录,也就是在哪个目录下运行这个程序。

F:\aaa\bbb\ccc目录下有个文件 TestDir.py,打印当前工作目录。进入windows命令行窗口:

 在F:\aaa\bbb\ccc运行 python TestDir.py,输出F:\aaa\bbb\ccc

 在F:\aaa\bbb运行 python ccc/TestDir.py,输出F:\aaa\bbb

 在F:\aaa运行 python bbb/ccc/TestDir.py,输出F:\aaa

pycharm里面默认的工作目录是你项目的工作目

使用sys.path[0]能够获取TestDir.py文件所在的目录

import os
print(os.getcwd())

import sys
print(sys.path[0])


参考:os.getcwd && os.path.abspath详解_funnyPython的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值