Python字符串与文件操作常用函数实战指南

山间有风
山间有风
发布时间:2026-10-12| 1人浏览过
原创

本文汇总了Python处理文本与文件系统时的核心工具函数。内容涵盖集合成员关系判定、字符串过滤与固定缩进调整、占位符替换、安全文件读写、自定义规则目录扫描及压缩包信息提取。所有示例均已适配Python 3环境,附带关键参数说明与运行状态提示,可直接嵌入日常数据清洗与自动化脚本中。

集合包含关系与去重处理

在处理列表或字符串匹配时,常需判断元素是否属于目标集合。以下函数利用生成器表达式与内置方法,替代低效的循环遍历,提供明确的布尔返回结果:

def contains_any(seq, target_set):
    """判断seq中是否存在target_set里的任意项"""
    return any(item in target_set for item in seq)

def contains_all(sub_seq, super_seq):
    """判断sub_seq中的所有项是否都在super_seq里"""
    return all(item in super_seq for item in sub_seq)

def contains_set(sub_set, parent_seq):
    """判断parent_seq是否包含sub_set的全部元素(等价于子集验证)"""
    return set(sub_set).issubset(parent_seq)

def remove_duplicates(raw_list):
    """去除列表重复项并保持原有顺序"""
    seen = []
    for item in raw_list:
        if item not in seen:
            seen.append(item)
    return seen

字符串过滤、缩进与模板替换

针对文本清洗与动态渲染需求,提供字符白名单过滤、统一缩进排版及基于字典的安全替换方案。当字典中缺失键值时,可通过safe参数控制是否抛出异常:

def make_char_filter(keep_chars):
    """返回仅保留keep_chars中字符的过滤函数"""
    def _filter(text):
        return ''.join(ch for ch in text if ch in keep_chars)
    return _filter

def pad_lines(text, indent_spaces=4):
    """将多行文本按换行对齐添加指定空格数的缩进"""
    prefix = ' ' * indent_spaces
    return '\n'.join(prefix + line.strip() for line in text.splitlines())

def replace_by_keys(template_str, mapping_dict, safe=True):
    """使用mapping_dict替换模板串中的$标识符或{name}结构"""
    import string
    style = string.Template(template_str)
    if safe:
        return style.safe_substitute(mapping_dict)
    else:
        return style.substitute(mapping_dict)

文件流读取与目录批量操作

结合上下文管理器与安全遍历逻辑,实现稳定的I/O操作与路径筛选。涉及底层重命名时需提前备份,避免破坏原始数据:

import os
import zipfile
import fnmatch

def iter_file_lines(file_path, handler):
    """逐行读取文件并执行回调函数"""
    with open(file_path, 'r', encoding='utf-8') as f:
        for line in f:
            handler(line.strip())

def write_lines_to_file(file_path, lines_iterable):
    """将可迭代对象的文本写入新文件或覆盖现有文件"""
    with open(file_path, 'w', encoding='utf-8') as f:
        f.writelines(lines_iterable)

def scan_zip_info(zip_path):
    """列出ZIP包内文件名与占用字节数"""
    try:
        with zipfile.ZipFile(zip_path, 'r') as zf:
            for name in zf.namelist():
                size = len(zf.read(name))
                print(f'File: {name} | Size: {size} bytes')
    except Exception as e:
        print(f'解析失败: {e}')

def walk_filtered_dir(root_dir, pattern='*', single_level=False, include_dirs=False):
    "<!--注意:原稿此处逻辑已重构为更安全的yield生成器-->
    """按通配符模式遍历目录并生成相对路径"""
    patterns = pattern.split(';')
    for current_path, subdirs, files in os.walk(root_dir):
        if include_dirs:
            files.extend(subdirs)
        files.sort()
        for fname in files:
            if any(fnmatch.fnmatch(fname, p) for p in patterns):
                rel_path = os.path.relpath(os.path.join(current_path, fname))
                yield rel_path.replace('\\', '/')
        if single_level:
            break

排错指引与兼容注意事项

  • 编码配置:文件读写函数默认使用utf-8。若处理GBK/GB2312历史文档,请将encoding='utf-8'替换为对应编码。
  • 路径分隔符:Windows环境下os.path自动处理分隔符。跨平台传输时建议引入pathlib.Path统一接口,减少硬编码斜杠带来的解析错误。
  • 重命名安全:原脚本在os.walk活跃遍历时直接调用os.rename修改后缀名,可能引发文件句柄冲突或遗漏未访问节点。务必在执行批量重命名前进行全盘备份,或改为两阶段处理(先收集路径列表,后统一重命名)。

总结

以上就是Python字符串和文件操作常用函数的详细内容,更多关于Python开发技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。