path
# path模块
当前文件路径
# __file__是当前执行的文件
# 获取当前文件__file__的路径
os.path.realpath(__file__)
os.path.abspath(__file__)
# 获取当前文件__file__的所在目录
os.path.dirname(os.path.realpath(__file__))realpath 和 abspath
如果是链接文件, 那么realpath显示的是所链接文件的路径.
ubuntu@ThinkCentre:/home/public/tmp$ tree
.
├── txtfile
└── txtfile_ln -> /home/public/tmp/txtfile
0 directories, 2 files
ubuntu@ThinkCentre:/home/public/tmp$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.realpath('txtfile_ln')
'/home/public/tmp/txtfile'
>>> os.path.abspath('txtfile_ln')
'/home/public/tmp/txtfile_ln'
>>> os.path.abspath('txtfile')
'/home/public/tmp/txtfile'
>>> os.path.realpath('txtfile')
'/home/public/tmp/txtfile'获取路径下所有文件及文件夹
不含路径
代码
import os
print(os.listdir('.'))输出
/usr/bin/python3.5 /media/bovenson/Data/workspace/Pycharm/PurePythonProject/pathtest.py
['.idea', 'config.ini', 'config_parser.py', 'example.ini', 'example.log', 'lines.txt', 'log.py', 'logtest.py', 'pathtest.py', 'read_config_file.py', 'Test.py', 'Test01.py', 'Test02.py', 'Test03.py', 'Test04.py', 'Test05.py', 'Test06.py', 'Test07.py', 'Test08.py', 'Test09.py', 'Test10.py', 'url_test.py', 'write_config_file.py', '__pycache__']
Process finished with exit code 0包含路径
代码
import os
file_path = '/home'
for item in os.listdir(file_path):
    print(os.path.join(file_path, item))输出
/usr/bin/python3.5 /media/bovenson/Data/workspace/Pycharm/PurePythonProject/pathtest.py
/home/ubuntu
/home/mint
/home/ftp
/home/public
/home/bovenson
/home/deepin
/home/elementary
/home/lost+found
/home/test.pcap
Process finished with exit code 0递归获取某一路径下所有文件及文件夹
#!/usr/bin python3
# coding: utf-8
"""
FILE: test.py
DATE: 17-6-26 上午11:15
DESC: 
"""
import os
p_file_path = '/media/bovenson/Data/媒体/音乐/网易云音乐'
def get_all_file_and_dir_recursion(file_path, recursion=False):
    res = []
    for item in os.listdir(file_path):
        full_path = os.path.join(file_path, item)
        res.append(full_path)
        if recursion and os.path.isdir(full_path):
            res.extend(get_all_file_and_dir_recursion(full_path, recursion=recursion))
    return res
if __name__ == "__main__":
    file_dir_s = get_all_file_and_dir_recursion(p_file_path, True)
    print(len(file_dir_s))获取文件当前目录下文件
代码
import os
import pathlib
for item in os.listdir('.'):
    if os.path.isfile(item):
        print("Path   : ", item)
        print("Suffix : ", pathlib.PurePath(item).suffix)
        print("Suffixs: ", pathlib.PurePath(item).suffixes)
        print("")输出
/usr/bin/python3.5 /media/bovenson/Data/workspace/Pycharm/PurePythonProject/pathtest.py
Path   :  other.tar.gz
Suffix :  .gz
Suffixs:  ['.tar', '.gz']
Path   :  pathtest.py
Suffix :  .py
Suffixs:  ['.py']
Process finished with exit code 0获取当前路径下特定后缀的文件
代码
import os
import pathlib
import re
# 打印当前目录所有文件
for item in os.listdir('.'):
    if os.path.isfile(item):
        print(item)
print()
# 前缀
suffix = 'py'
for item in os.listdir('.'):
    # 忽略前面的'.'符号
    if os.path.isfile(item) and re.sub(r'^\.', '', pathlib.PurePath(item).suffix) == re.sub(r'^\.', '', suffix):
        print(item)输出
/usr/bin/python3.5 /media/bovenson/Data/workspace/Pycharm/PurePythonProject/pathtest.py
other.tar.gz
pathtest.py
pathtest.py
Process finished with exit code 0另一个
代码
import os
import pathlib
import re
suffix = 'py'
for item in os.listdir('.'):
    if os.path.isfile(item):
        print(item)
print()
# 如果给定的后缀不是'.'开头, 则添加'.'
suffix = suffix if suffix.startswith('.') else '.' + suffix
for item in os.listdir('.'):
    if os.path.isfile(item) and pathlib.PurePath(item).suffix == suffix:
        print(item)输出
/usr/bin/python3.5 /media/bovenson/Data/workspace/Pycharm/PurePythonProject/pathtest.py
other.tar.gz
pathtest.py
pathtest.py
Process finished with exit code 0判断是否是特定后缀
代码
import os
import pathlib
def is_specific_suffix(file_path, suffix):
    # 预处理给定后缀
    suffix = str(suffix).lower()
    suffix = suffix if suffix.startswith('.') else '.' + suffix
    if pathlib.PurePath(file_path).suffix.lower() == suffix:
        return True
    return False
print(is_specific_suffix("a.txt", 'txt'))
print(is_specific_suffix("a.txt", 'TXT'))
print(is_specific_suffix("a.txt", '.txt'))
print(is_specific_suffix("a.TXT", '.txt'))
print(is_specific_suffix("a.TXT", '.md'))输出
/usr/bin/python3.5 /media/bovenson/Data/workspace/Pycharm/PurePythonProject/pathtest.py
True
True
True
True
False
Process finished with exit code 0获取特定目录下特定后缀文件
代码
def get_specific_file_list(dir_path=None, suffix=None, recursion=False):
    """
    获取目录下特定后缀文件
    :param dir_path: 目录路径
    :param suffix: 后缀, str或者list
    :param recursion: 是否递归搜索子文件夹
    :return: 文件列表
    """
    _res = []
    dir_path = os.path.abspath(dir_path)
    try:
        if dir_path is None or suffix is None or not os.path.exists(dir_path):
            return _res
        for item in os.listdir(dir_path):
            item = os.path.join(dir_path, item)
            # 如果是文件
            if os.path.isfile(item):
                # 如果后缀是字符串
                if isinstance(suffix, str) and is_specific_suffix(item, suffix):
                    _res.append(os.path.join(dir_path, item))
                # 如果后缀是列表
                elif isinstance(suffix, list):
                    for _suffix in suffix:
                        if is_specific_suffix(item, _suffix):
                            _res.append(os.path.join(dir_path, item))
            elif os.path.isdir(item) and recursion:
                # 如果是路径且递归查找
                _recursion_res = get_specific_file_list(os.path.join(dir_path, item), suffix, recursion=recursion)
                for _t_res in _recursion_res:
                    _res.append(_t_res)
    except:
        # import traceback
        # traceback.print_exc()
        return _res
    return _res
def is_specific_suffix(file_path, suffix):
    # 预处理给定后缀
    suffix = str(suffix).lower()
    suffix = suffix if suffix.startswith('.') else '.' + suffix
    if pathlib.PurePath(file_path).suffix.lower() == suffix:
        return True
    return False
if __name__ == "__main__":
    print(get_specific_file_list("./../../", "mp3", recursion=True))输出
/usr/bin/python3.5 /home/bovenson/PycharmProjects/bovenson/common/util/utils.py
['/home/bovenson/PycharmProjects/bovenson/media/music/Home.mp3', '/home/bovenson/PycharmProjects/bovenson/media/music/Frances - Let It Out.mp3']
Process finished with exit code 0最后更新于
这有帮助吗?