zoukankan      html  css  js  c++  java
  • 解决文件路径的问题的总结

    构建路径:
        os.path 模块用来管理文件路径问题,它中包含了很多用以构建路径的函数,其中最常用的便是 join,abspath 以及 expanduser 函数:

    • join:拼接路径(不同的操作系统使用不同的分隔符拼接);

    • abspath:得到绝对路径;

    • expanduser:展开用户的 home 目录。

    具体的操作实例如下所示:

    >>> import os
    >>> os.getcwd()
    '/root/rocky0429'
    >>> os.listdir()
    ['test.py', 'c.py', 'b.txt', 'a.txt']
    >>> os.path.join('~','rocky0429','a.txt')
    '~/rocky0429/a.txt'
    >>> os.path.abspath('.')
    '/root/rocky0429'
    >>> os.path.abspath('..')
    '/root'
    >>> os.path.abspath('../rocky0429/b.txt')
    '/root/rocky0429/b.txt'
    >>> os.path.expanduser('~')
    '/root'
    >>> os.path.expanduser('~/rocky0429')
    '/root/rocky0429'
    >>> os.path.expanduser('~/rocky0429/c.py')
    '/root/rocky0429/c.py'

    上述代码中的 os.path 模块中的 abspath 函数用来返回一个相对路径的绝对路径,那么相应的,也会存在一个函数 isabs 来检查某路径是否为绝对路径:

    >>> os.path.isabs('/root/rocky0429/test.py')
    True
    >>> os.path.isabs('~')
    False

    当然在写代码的时候,有时候需要导入当前源文件所在目录下的其他包,这个时候就需要获取当前源文件的父目录,那么如何获取呢?我们可以用 __file__ 这个变量来表示,具体操作如下所示:

    # coding:utf-8
    import os
    
    source_file_path = os.path.abspath(__file__)
    
    print('Current working directory : {}'.format(os.getcwd()))
    print('Source file address : {}'.format(source_file_path))

    输入的结果如下所示:

    Current working directory : /root/rocky0429
    Source file address : /root/rocky0429/test.py

    拆分路径

     

    我们使用 Python 可以很方便的构建文件路径,当然也可以很舒服的对文件路径进行拆分,os.path 模块在拆分路径中常用的是 split/splitext,dirname 以及 basename 函数:

    • split:返回一个二元组,包括文件的路径和文件名;

    • splitext:也是返回一个二元组,包括扩展名和去除扩展名的部分;

    • dirname:返回文件所在路径;

    • basename:返回文件名。

    具体的操作实例如下所示:

    >>> import os
    >>> source_file_path = '/root/rocky0429/test.py'
    >>> os.path.split(source_file_path)
    ('/root/rocky0429', 'test.py')
    >>> os.path.splitext(source_file_path)
    ('/root/rocky0429/test', '.py')
    >>> os.path.dirname(source_file_path)
    '/root/rocky0429'
    >>> os.path.basename(source_file_path)
    'test.py'

    判断路径是否存在

    os.path 模块也提供了一些函数来判断某条路径是否存在,还能判断处在这个条路径的文件的类型,常用的便是 exists,isfile 以及 isdir 函数(is 开头是判断类函数,返回布尔类型结果):

    • exists:判断某条路径是否存在;

    • isfile:判断路径是否存在且为一个文件;

    • isdir:判断路径是否存在且为一个文件夹。

     看到这里你可能觉得上面说的都很简单,可恰恰是简单的东西叠加组合就能“变出”很多你想要的结果,如何去使用这里面有大学问。对于 os.path 模块里的函数,如果我们可以充分利用,也能够实现很多有用的功能,下面来看几个例子:

    1.获取 /root/rocky0429 目录下的所有文件

    >>> import os
    >>> [file for file in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isfile(file)]
    ['test.py', 'c.py', 'b.txt', 'a.txt']

    2.获取 /root/rocky0429 目录下的所以列表

    >>> import os
    >>> [table for table in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isdir(table)]
    ['data', 'leey']

    3.获取 /root/rocky0429 目录下所有目录的绝对地址

    >>> import os
    >>> {table: os.path.realpath(table) for table in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isdir(table)}
    {'data': '/root/rocky0429/data', 'leey': '/root/rocky0429/leey'}
  • 相关阅读:
    ES6中map数据结构学习
    React中,input外边如果包一个div,可以把input的onChange事件绑定到div上面,并且也生效
    筛数组
    字符串slice、substring、substr
    DVA-subscriptions
    react hooks学习
    React会自动把虚拟DOM数组展开
    React+Redux+Dva学习
    [转] 关于卫星轨道的科普
    边缘计算在智慧城市中的应用【摘录】
  • 原文地址:https://www.cnblogs.com/key01/p/10185713.html
Copyright © 2011-2022 走看看