Python字符串与文件操作常用函数实战指南
本文汇总了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开发技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













