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

Python 程序设计讲义(68):Python 的文件操作——使用os模块操作文件

Python 程序设计讲义(68):Python 的文件操作——使用os模块操作文件

目录

  • Python 程序设计讲义(68):Python 的文件操作——使用os模块操作文件
    • 一、删除文件:使用`os.remove()`函数
    • 二、重命名文件与目录:使用`os.rename()`函数
    • 三、获取文件的基本信息:使用`os.stat()`函数

内置的os模块除了可以对目录进行操作,还可以对文件进行操作。比如:查看与修改文件权限,重命名文件与目录,删除文件与目录等。

os模块提供的与文件有关的函数如下表所示:

函数说明
access(path,accessmode)判断对文件是否有指定的访问权限(读取、写入、执行权限)。accessmode的值是R_OK(读取)、W_OK(写入)、X_OK(执行)、F_OK(存在)。如果有指定的权限,则返回1,否则返回0
chmod(path,mode)修改path指定文件的访问权限。
remove(path)删除path指定的文件路径。
rename(src,dst)将文件或目录src重命名为dst
stat(path)返回path指定文件的信息。
startfile(path[,operation])使用关联的应用程序打开path指定的文件。

一、删除文件:使用os.remove()函数

remove()函数的语法格式如下:

os.remove(path)
说明:
path为要删除的文件路径,可以是绝对路径,也可以是相对路径。

例如:

import os
os.chdir(r"d:\python示例")
print(os.listdir(r"d:\python示例"))
os.remove("hello.txt")  #删除文件
os.remove("hello - 副本.txt")  #删除文件
print(os.listdir(r"d:\python示例"))程序的运行结果为:
['college.csv', 'dir123', 'dir20250809', 'hello - 副本.txt', 'hello.txt', 'hello001.txt', 'python.png', 'stu.csv', 'wgx.txt', 'wgx123.txt']
['college.csv', 'dir123', 'dir20250809', 'hello001.txt', 'python.png', 'stu.csv', 'wgx.txt', 'wgx123.txt']

如果要删除的文件不存在,则会抛出异常。

例如:

import os
os.chdir(r"d:\python示例")
print(os.listdir(r"d:\python示例"))
os.remove('abc.txt')程序的运行结果为:
['c113.csv', 'dir20250809', 'hello001.txt', 'mydir123', 'python.png', 'stu.csv', 'wgx.txt', 'wgx123.txt']
Traceback (most recent call last):File "C:\Users\wgx58\PycharmProjects\PythonProject1\hello.py", line 4, in <module>os.remove('abc.txt')~~~~~~~~~^^^^^^^^^^^
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'abc.txt'

因此,在删除文件之前应该先判断文件是否存在,如果存在才删除。

例如:

import os
os.chdir(r"d:\python示例")
print(os.listdir(r"d:\python示例"))
if os.path.exists('abc.txt'):os.remove('abc.txt')
else:print("要删除的文件不存在")程序的运行结果为:
['c113.csv', 'dir20250809', 'hello001.txt', 'mydir123', 'python.png', 'stu.csv', 'wgx.txt', 'wgx123.txt']
要删除的文件不存在

二、重命名文件与目录:使用os.rename()函数

使用rename()函数是,如果指定的参数src是文件,则重命名文件,如果是目录,则重命名目录。

rename()函数的语法格式如下:

os.rename(src,dst)

例如:

import os
os.chdir(r"d:\python示例")
print(os.listdir(r"d:\python示例"))
os.rename('college.csv','c113.csv') #重命名文件
os.rename('dir123','mydir123')  #重命名目录
print(os.listdir(r"d:\python示例"))程序的运行结果为:
['college.csv', 'dir123', 'dir20250809', 'hello001.txt', 'python.png', 'stu.csv', 'wgx.txt', 'wgx123.txt']
['c113.csv', 'dir20250809', 'hello001.txt', 'mydir123', 'python.png', 'stu.csv', 'wgx.txt', 'wgx123.txt']

在重命名文件或目录时,如果需要重命名的文件或目录不存在,则会抛出异常。

例如:

import os
os.chdir(r"d:\python示例")
print(os.listdir(r"d:\python示例"))
os.rename("abc.txt","wgx/txt")程序的运行结果为:
['c113.csv', 'dir20250809', 'hello001.txt', 'mydir123', 'python.png', 'stu.csv', 'wgx.txt', 'wgx123.txt']
Traceback (most recent call last):File "C:\Users\wgx58\PycharmProjects\PythonProject1\hello.py", line 4, in <module>os.rename("abc.txt","wgx/txt")~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'abc.txt' -> 'wgx/txt'

因此,在重命名文件或目录之前应该先判断文件或目录是否存在,如果存在才重命名。

例如:

import os
os.chdir(r"d:\python示例")
print(os.listdir(r"d:\python示例"))
if os.path.exists("abc.txt"):os.rename("abc.txt","wgx/txt")
else:print("文件不存在")程序的运行结果为:
['c113.csv', 'dir20250809', 'hello001.txt', 'mydir123', 'python.png', 'stu.csv', 'wgx.txt', 'wgx123.txt']
文件不存在

三、获取文件的基本信息:使用os.stat()函数

计算机上的文件本身会包含一些信息,如文件的最后一次访问时间、最后一次修改时间、文件大小等。使用os.stat()函数可以获取文件的这些信息。

os.stat()函数的语法格式如下:

os.stat(path)

stat()函数返回的是一个对象,该对象包含如下表所示的属性。通过访问这些属性可以获取文件的基本信息。

stat()函数返回的对象的常用属性:

属性说明
st_mode保护模式
st_ino索引号
st_nlink硬链接号
st_size文件大小(单位为字节)
st_mtime最后一次修改时间
st_dev设备名
st_uid用户ID
st_gidID
st_atime最后一次访问时间
st_ctime最后一次状态变化的时间

例如:

import os
os.chdir(r"d:\python示例")
print(os.listdir())
obj1=os.stat('stu.csv')
print("文件大小为:",obj1.st_size)
print("最后一次修改时间:",obj1.st_mtime)
print("最后一次访问时间:",obj1.st_atime)程序的运行结果为:
文件大小为: 136
最后一次修改时间: 1754701220.220549
最后一次访问时间: 1754701220.220549
http://www.dtcms.com/a/325162.html

相关文章:

  • 整数规划-分支定界
  • Win10清理C盘步骤
  • 展锐平台(Android15)WLAN热点名称修改不生效问题分析
  • 最大子数组和-一维动态规划
  • C++ 黑马 引用
  • 一款轻量、免费、无广告,强大的演示工具,支持屏幕放大、涂鸦、截图、录屏
  • PostgreSQL因为A/B switch以及group表过多导致WAL full的情况讨论
  • 托福单词词组积累 2025-08-10
  • 大模型 MCP服务案例详细讲解
  • 线程池的核心线程数与最大线程数怎么设置
  • NVIDIA Jetson AGX Orin 全景解析——边缘计算的高性能选择
  • 攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DNS欺骗、DHCP饿死)
  • VGG改进(1):基于Global Attention模块的详解与实战
  • RL代码实践 02——策略迭代
  • ai生成完成后语音通知
  • Starlink卫星终端对星策略是终端自主执行的还是网管中心调度的?
  • 如何部署图床系统 完整教程
  • python魔法属性__module__与__class__介绍
  • 学习numpy详解
  • Shell脚本-其他变量定义
  • 全面了解机器语言之kmeans
  • Redis缓存穿透、缓存击穿、缓存雪崩
  • Mock与Stub
  • 组合期权:水平价差
  • day29 消息队列
  • CST支持对哪些模型进行特征模仿真?分别有哪些用于特征模分析的求解器?
  • 信号处理函数中调用printf时,遇到中断为什么容易导致缓冲区损坏?
  • 介绍一下线程的生命周期及状态?
  • 化工设备健康管理解决方案:基于多物理场监测的智能化技术实现
  • 【系统分析师】软件需求工程——第11章学习笔记(上)