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

Python3 OS模块中的文件/目录方法说明十二

一. 简介

前面文章简单学习了 Python3 中 OS模块中的文件/目录的部分函数。

本文继续来学习 OS 模块中文件、目录的操作方法:rename() 方法与 renames()方法。

二. Python3 OS模块中的文件/目录方法

1. rename() 方法

rename() 方法用于重命名文件或目录。它还可以用于移动文件或目录到一个新的路径。该方法在不同的操作系统上可能会有不同的行为,特别是在处理跨文件系统的操作时。

rename()方法语法格式如下:

os.rename(src, dst)

示例如下:

#!/usr/bin/env python3

import os,sys
#假设已经存在 file文件夹
dir = "./test_dir"

print("当前目录列表: %s" % os.listdir(os.getcwd()))
#更改文件夹的名字
os.rename(dir, "test_dirs")
print("重命名后目录列表: %s" % os.listdir(os.getcwd()))

运行后会将重命名文件夹的名字:

示例2 如下:

#!/usr/bin/env python3

import os,sys
#假设文件已经存在(./test_dirs/test.txt)
src_dir = "./test_dirs/test.txt"
dst_dir = "./nwdir/file.txt"

fd = os.open(src_dir, os.O_RDWR|os.O_CREAT)
os.write(fd , "you are wonderful, I think!".encode())
os.lseek(fd, 0, 0)
bytes_data = os.read(fd, 100)
print(bytes_data)

print("当前目录列表: %s" % os.listdir(os.getcwd()))
#移动文件的位置
os.rename(src_dir, dst_dir)
print("重命名后目录列表: %s" % os.listdir(os.getcwd()))

运行后文件就移动了位置:

2.  renames()方法

renames()方法 用于递归地重命名文件或目录。

renames()方法 不仅能够重命名目标文件或目录,还会处理其父目录的创建和删除操作。

如果目标路径中的某些中间目录不存在,os.renames() 会自动创建这些目录;

如果在移动过程中某些源目录变为空,则会删除这些空目录。

renames()方法语法格式如下:

os.renames(old, new)

示例1:重命名文件并创建目标目录

#!/usr/bin/env python3

import os,sys

src_file = "old.txt"
#假设目录 test_dir不存在
dst_dir = "./test_dir/new.txt"

print("当前目录列表: %s\n" % os.listdir(os.getcwd()))

#使用 os.renames 重命名文件并创建目标目录
os.renames(src_file, dst_dir)
print("重命名后目录列表: %s" % os.listdir(os.getcwd()))

运行后结果如下:

可以看出,当中间目录不存在时,会创建中间 目录 test_dir。

示例 2:

移动目录并删除空的源目录:假设你有一个目录 src_dir,你想将其移动到 ./dst_dir/src_dir ,并且 dst_dir 目录不存在:

#!/usr/bin/env python3

import os,sys

#如果目录 src_dir为空目录,则会被删除
src_file = "src_dir"
#假设目录 dst_dir不存在
dst_dir = "./dst_dir/src_dir"

print("当前目录列表: %s\n" % os.listdir(os.getcwd()))

#使用 os.renames 重命名文件并创建目标目录
os.renames(src_file, dst_dir)
print("重命名后目录列表: %s" % os.listdir(os.getcwd()))

运行后结果如下:

可以看出,src_dir目录为空目录,则在运行后,src_dir目录已经被删除。移动到了 ./dst_dir/src_dir目录下:


http://www.kler.cn/a/522089.html

相关文章:

  • Rust:Rhai脚本编程示例
  • 计算机网络 IP 网络层 2 (重置版)
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-head.py
  • 36、【OS】【Nuttx】OSTest分析(2):环境变量测试
  • 【redis】redis操作set类型的key发生了什么?
  • hive:数据导入,数据导出,加载数据到Hive,复制表结构
  • DeepSeek R1:中国AI黑马的崛起与挑战
  • AI Agent的安全实践:权限控制与数据保护
  • 1. Java-MarkDown文件创建-工具类
  • 系统思维和升维思维以及它们对项目经理重要性
  • 定时任务Spring Task双向数据传输WebSocket
  • 第05章 14 绘制人脸部的PolyData并使用小圆锥体来展现法线
  • Go反射指南
  • 爱的魔力转圈圈,基于carsim与simulink模拟仰望u8原地调头
  • DeepSeek-R1 是否才是 “Open” AI?
  • YOLOv11改进,YOLOv11检测头融合DynamicHead,并添加小目标检测层(四头检测),适合目标检测、分割等任务
  • 航空客户价值的数据挖掘与分析(numpy+pandas+matplotlib+scikit-learn)
  • 基于STM32的循迹小车设计与实现
  • torch.tile 手动实现 kron+矩阵乘法
  • MongoDB中常用的几种高可用技术方案及优缺点
  • 基础项目实战——3D赛车(c++)
  • 把本地搭建的hexo博客部署到自己的服务器上
  • 网络工程师 (4)存储系统
  • 21款炫酷烟花合集
  • python selenium 用法教程
  • Warm-Flow新春版:网关直连和流程图重构, 新增Ruoyi-Vue-Plus优秀开源集成案例