当前位置: 首页 > news >正文

Python Cookbook-2.17 在目录树中改变文件扩展名

任务

需要在一个目录的子树中重命名一系列文件,具体地说,你想将某一指定类型的文件的扩展名改成另一种扩展名。

解决方案

用 Python 标准库提供的 os.walk 函数来处理子目录中的所有文件,任务变得非常容易:

import os
def swapextensions(dir, before, after):
	if before [:1] != '.':
		before = '.' + before
	thelen = -len(before)
	if after[:1] !=  '.':
		after = '.' + after
	for path,subdirs,files in os.walk(dir):
		for oldfile in files:
		if oldfile[thelen:] == before:
			oldfile = os.path.join(path,oldfile)
			newfile = oldfile[:thelen] + after
			os.rename(oldfile,newfile)
if __name__== 'main':
	import sys
	if len(sys.argv) != 4:
		print "Usage:swapext rootdir before after"
		sys.exit(100)
	swapextensions(sys.argv[l], sys.argv[2], sys.argv[3])

讨论

本节展示了怎样改变一个指定目录中所有文件的扩展名,涉及范围包括了所有的子目录,以及更下级子目录,以此类推。这种技术很适合在一个文件夹结构中批量修改文件的扩展名,比如针对一个 web 站点的目录树进行修改。可以用这个脚本纠正用程序批量生成文件时所犯的错误。

本节给的代码既可以被用作一个可以随时导人的模块,也可以作为一个脚本并运行在命令行中,而且代码设计得很谨慎,完全是平台无关的。可以传人带点(.)的扩展名也可以传入不带点的,程序在必要时会自行插入点。(作为这种方便性的一个直接后果是,此程序不能处理没有扩展名的文件,也不能直接处理点,在UNIX系统中这种限制有时很让人恼火。)

实现本节解决方案所用的技术,一些完美主义者会认为过于底层–直接用操作字符串的方式来修改处理文件名和扩展名,而不是用os.path 提供的函数。不过这没什么大不了的:用os.path 很好,但是用Python 的强大的字符串工具也很好,

相关文章:

  • VSCode离线安装插件
  • 关于网页地图的坐标系
  • 《深度学习实战》第6集:扩散模型(Diffusion Models)与高质量图像生成
  • Ruby基础
  • 【免费】YOLO[笑容]目标检测全过程(yolo环境配置+labelimg数据集标注+目标检测训练测试)
  • Spring Boot 接口 JSON 序列化优化:忽略 Null 值的九种解决方案详解
  • Python--内置模块和开发规范(上)
  • DeepSeek可实现智能派工,提升售后服务效率
  • ubuntu部署gitlab-ce及数据迁移
  • 【北京迅为】iTOP-RK3568OpenHarmony系统南向驱动开发-第2章 内核HDF驱动框架架构
  • 【容器化】低版本docker拉取ubuntn 22.04镜像启动容器执行apt update提示 NO_PUBKEY 871920D1991BC93C
  • 腿足机器人之十四-强化学习SAC算法
  • 指针的进阶(提高篇)
  • python绘图之灰度图
  • 一个实用的 python 库!
  • 天佐.乾坤袋 基于抽屉式文件存储的NoSql数据库
  • Windows上使用go-ios实现iOS17自动化
  • 点云配准技术的演进与前沿探索:从传统算法到深度学习融合(4)
  • 【Python系列】Python 连接 PostgreSQL 数据库并查询数据
  • 在 IntelliJ IDEA 中启动多个注册到 Nacos 的服务
  • 珠海建站程序/关键词搜索引擎工具爱站
  • 北京网站制作公司哪家好/快手刷评论推广网站
  • 广西大兴建设有限公司网站/网站展示型推广
  • wordpress 有什么用/济南做seo外包
  • 彩票网站多少钱可以做/青岛seo网络推广
  • 兰州 网站建设/无锡seo