Python常用标准库-os库一文详解(二):文件操作和路径操作

2023-05-16

目录

前言

文件操作

一、读写文件

1.读文件

2.写文件

二、创建文件

三、删除文件

四、重命名文件

五、文件判断

路径操作

1.拼接

2. 分离路径

3.获取路径中的文件名

4.获取路径中的路径名

5.获取绝对路径

6.分离文件拓展名

点关注,防走丢,如有纰漏之处,请留言指教,非常感谢


前言

Python的os(Operating System)库是一个用于与操作系统进行交互的标准库,它提供了许多有用的函数和变量,用于访问文件系统、环境变量、进程、管道、用户和组等操作系统相关的功能。

这里我为大家总结了所有OS库里面的各类功能常用函数:

有这张思维导图基本就够了,基本涵盖所有涉及到的Python基础系统路径操作功能函数了。当然还有很多关于这些函数细节的,需要辅以实际代码展示例子,以更直观的看到每个函数该如何使用和操作。

关于OS库的功能还是挺多的, 尤其是文件和目录操作,其实掌握这些sys和os的函数操作之后,就可以实现较高级的脚本编程,可以随心所欲的控制自己电脑发出任何操作和指令,比鼠标点击更加高效更灵活,或者可以自己编写一些脚本发给其他人的实现一些意想不到的效果。


文件操作

  • 文件的IO操作完成后必须关闭连接对象
  • flags多个值时以|隔开

常用的flags:

  • os.O_RDONLY: 以只读的方式打开
  • os.O_WRONLY: 以只写的方式打开
  • os.O_RDWR : 以读写的方式打开
  • os.O_NONBLOCK: 打开时不阻塞
  • os.O_APPEND: 以追加的方式打开
  • os.O_CREAT: 创建或打开文件
  • os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)

一、读写文件

常用格式 os.open(path, flags, mode), mode一般为Linux系统文件操作的参数 ,设置文件权限。

以只读权限打开config文件,文件不存在时报错,先判断是否存在 再进行操作,必要时需先判断是否为文件。

1.读文件

if os.path.lexists(r'C:\Users\10799\get_info\OS\newTest\txtfile.txt'):
    fd = os.open(r'C:\Users\10799\get_info\OS\newTest\txtfile.txt',os.O_RDONLY)
    print(os.read(fd, 9)) 
    os.close(fd)
else:
    pass

2.写文件

 将文件的前N个字符替换为新的字符,替换长度由替换的内容长度决定

fd1 = os.open(r'C:\Users\10799\get_info\OS\newTest\txtfile.txt', os.O_WRONLY)
os.write(fd1, bytes('python', 'UTF-8')) # 文件的读写都是以字节类型存取
os.close(fd1)

文件存在打开,文件不存在新增

# 文件存在打开,文件不存在新增
fd2 = os.open(r'C:\Users\10799\get_info\OS\newTest\txtfile.txt', os.O_RDWR)
print(os.read(fd2, 10))
os.write(fd2, bytes('java', 'UTF-8'))
print(os.read(fd2, 10))
os.close(fd2)

 

追加模式打开文件,必须具有写权限

# 追加模式打开文件,必须具有写权限
fd3 = os.open(r'C:\Users\10799\get_info\OS\newTest\txtfile.txt', os.O_RDWR | os.O_APPEND)
print(os.read(fd3, 100))
os.write(fd2, bytes('php', 'UTF-8'))
os.close(fd2)

 

二、创建文件

创建空文件

# 创建空文件
fd = os.open(r'C:\Users\10799\get_info\OS\newTest\txtfile1.txt', os.O_CREAT)
os.close(fd)

 

创建文件并写入数据时须具有写权限

# 创建文件并写入数据时须具有写权限
fd = os.open(r'C:\Users\10799\get_info\OS\newTest\txtfile2.txt', os.O_CREAT | os.O_RDWR)
os.write(fd, bytes('Fanstuck', 'UTF-8'))
os.close(fd)

 

三、删除文件

# 文件不存在时报错
if os.path.lexists(r'C:\Users\10799\get_info\OS\newTest\txtfile2.txt'):
    os.remove(r'C:\Users\10799\get_info\OS\newTest\txtfile2.txt')
else:
    print("文件不存在")

 

四、重命名文件

这里注意一下,rename(one,two)第一个one参数以相对路径默认,可以输入绝对路径和相对路径,而two也是一样,若two不指定绝对路径则就在该python文件目录下。

# 文件不存在时报错
if os.path.lexists(r'C:\Users\10799\get_info\OS\newTest\txtfile1.txt'):
    os.rename(r'C:\Users\10799\get_info\OS\newTest\txtfile1.txt','txtfile2.txt')
else:
    print("文件不存在")

 

五、文件判断

 判断是否存在用exists,是否为文件用isfile。

# coding:utf-8
import os
# 文件是否存在
print(os.path.exists(r'C:\Users\10799\get_info\OS\newTest\txtfile.txt')) # true
# 是否为文件
print(os.path.isfile(r'C:\Users\10799\get_info\OS\newTest\txtfile.txt')) # True

路径操作

1.拼接

print(os.path.join("txt", 'file', 'user1', 'server.log'))

 

2. 分离路径

print(os.path.split(r"C:\Users\10799\get_info\OS\newTest\txtfile.txt"))

 

3.获取路径中的文件名

print(os.path.basename(r"C:\Users\10799\get_info\OS\newTest\txtfile.txt"))

 

4.获取路径中的路径名

print(os.path.dirname(r"C:\Users\10799\get_info\OS\newTest\txtfile.txt"))

 

5.获取绝对路径

print(os.path.abspath(r"newTest\txtfile.txt"))

 

6.分离文件拓展名

print(os.path.splitext(r"C:\Users\10799\get_info\OS\newTest\txtfile.txt"))


点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python常用标准库-os库一文详解(二):文件操作和路径操作 的相关文章

  • 实现阿里云服务器内网互通

    1 首先第一步应该是提交工单 xff0c 告知两台服务器的外网IP xff0c 然后通过工单进行反馈 2 如果地域都是一样那就好办很多 xff0c 比如参考官方的案例 xff1a 安全组应用案例 云服务器 ECS 阿里云帮助中心 官方内容如
  • hydra安装及使用

    说明 xff1a hydra是著名黑客组织thc的一款开源的暴力密码破解工具 xff0c 可以在线破解多种密码 官网 xff1a http www thc org thc hydra xff0c 可支持AFP Cisco AAA Cisco
  • 数据库mysql 主从方案

    双机热备的概念简单说一下 xff0c 就是要保持两个数据库的状态自动同步 对任何一个数据库的操作都自动应用到另外一个数据库 xff0c 始终保持两个数据库数据一致 这样做的好处多 1 可以做灾备 xff0c 其中一个坏了可以切换到另一个 2
  • shell工具--sed和awk详解

    grep grep是一款强大的文本过滤工具 xff0c 按照关键字或者正则表达式进行过滤 具体讲解请看博文 这里写链接内容 sed sed是一种流编辑器 xff0c 它是文本处理中非常中的工具 xff0c 能够完美的配合正则表达式使用 1
  • js实现打字机效果---Day06

    我常想象这样一幅画面 xff1a 素雅的大背景 xff0c 伴着可心的音乐 xff0c 优雅旋转着的芭蕾舞者 xff0c 旁边那不断打出的文字 xff0c 仿佛就这样娓娓道来他们那美美的故事 xff1b 也常想象 xff1a 呼喇啦甩动的大
  • 纯css3实现漂亮的对话框----Day07

    姑且先不来讨论css3跟css的区别 xff0c 也不说html和html5的不同 xff0c 虽然这很关键 xff0c 但是现阶段还真的没整利落了 xff0c 姑且就这些应用先用着 xff0c 等自己有些见解了再来探讨那些深层次的问题 先
  • 纯css3实现饼状图-------Day21

    现代网站在商务应用中比较广泛 xff0c 什么oa xff0c 什么erp xff0c 除了导入导出 xff0c 就是数据统计 xff0c 再不然就来个做个报表 xff0c 而饼状图作为数据的一种直观统计显示 xff0c 应用是非常广泛的
  • 你是如何理解var e=e||window.event的------Day26

    你是如何理解var e 61 e window event的 xff1f 相信很多人都能给我个回答说是 xff1a 为了实现多种浏览器兼容 不错 xff0c 确实是为了实现浏览器兼容 xff0c 但是它又是如何实现浏览器兼容的呢 xff1f
  • js实现回放拖拽轨迹-------Day48

    今天有点小高兴 xff0c csdn博客浏览量过万了 xff0c 在过去还从来没有过这么高的浏览量呢 xff0c 不得不说 xff0c 太多时候还是有些矫情 xff0c 可看到这些鼓励还是忍不住高兴啊 xff0c 至少 xff0c 这样让我
  • js实现动态删除表格的行或者列-------Day57

    昨天记录了动态添加表格的一行 xff0c 当然这个一行是指一行数据 xff0c 也就是说一行多少列也是加上的 xff0c 并且第几列的内容都可以添加上 xff0c 先来回顾下它的实现的关键点 xff1a 1 var row 61 table
  • js实现表格的选中一行-------Day58

    最开始想更多的用js来动态操作表格 xff0c 是因为在应用了easyUI之后 xff0c 发现直接写一个 lt table id 61 34 tt 34 gt lt table gt xff0c 这就够了 xff0c 界面里面就剩下这么一
  • 积跬步,聚小流-------关于UML时序图

    uml时序图的存在 在上一篇中记录了uml类图 xff0c 用类图来描述代码中所需要的类以及相互之间的关系 xff0c 也就立体的将整个程序框架展现在了我们面前 xff0c 像一幅画 xff0c 有山有水有人 一张照片只能定格当时的美好 x
  • 积跬步,聚小流------用smartpaginator来做分页

    网络上的实例 xff08 jquery smarypaginator 例图 xff09 如果说是从 百度 上搜索过 jquery分页插件 的朋友 xff0c 相信对上面的图片不会陌生 xff0c 几乎所有介绍 jquery分页插件 的文章中
  • 我的2017-搭建个人网站,搭建PHP环境(2)

    上周确定了 xff0c 想要应用的后台语言 xff0c 面临的最大问题就是 xff1a php我不会啊 xff0c 哈哈哈哈 xff0c 所以接下来首先要做的就是了解 学习php的相关知识 接下来的第一步 xff1a 环境搭建 1 下载安装
  • 设计一个类:只能在堆上创建对象?只能在栈上创建对象?只能创建一个对象?

    在C 43 43 中 xff0c 类的对象建立分为两种 xff0c 一种是静态建立 xff0c 如A a xff1b 另一种是动态建立 xff0c 如A ptr 61 new A xff1b 这两种方式是有区别的 静态建立一个类对象 xff
  • 我的2017-搭建个人网站,hello PHP(2)

    学习一门语言 xff0c 例行惯例 xff0c 先来个 hello world 搭建好了php环境 xff0c 然后就可以运行php了 xff0c 首先用一种最简单的方法 xff0c 在wamp安装位置 xff08 相应的文件夹 xff09
  • 我的2017-搭建个人网站,自拟定代码根目录

    wampserver集成安装环境安装的php的运行根目录在wamp文件夹中的www文件夹下 xff0c 而为了有效的将代码和服务器进行分离 xff0c 可以采用自拟定代码根目录进行修改 1 确定代码编辑位置 xff0c 修改服务器默认指向
  • 编译原理:求First集与Follow集的方法

    明天就要考试了 xff0c 发现一直理解错了First集与Follow集的解法 xff0c 贴上比较好理解的 文法 xff1a S ABc A a B b First集合求法 能 由非终结符号推出的所有的开头符号或可能的 xff0c 但要求
  • 位运算n & (n-1)的妙用

    本文转自 xff1a http blog csdn net zheng0518 article details 8882394 按位与的知识 n amp n 1 作用 xff1a 将n的二进制表示中的最低位为1的改为0 xff0c 先看一个
  • 二分查找算法(Java版)

    二分查找算法是非常经典且基本的算法 1 二分查找又称折半查找 xff0c 优点是比较次数少 xff0c 查找速度快 xff0c 平均性能好 xff1b 其缺点是要求待查表为有序表 xff0c 且插入删除困难 因此 xff0c 折半查找方法适

随机推荐

  • 电脑眼睛保护色——绿豆沙色

    眼科医生建议电脑屏幕不要用白色 xff0c 因为白色对眼睛的刺激是最大的 xff0c 最损伤视力 xff01 眼科医生推荐的颜色是 柔和的淡绿色 xff0c 也有人叫做绿豆沙色 按HSU 设置为 xff1a 色度 HUE xff1a 85
  • Java中两个数交换的细节问题

    在码代码过程中 xff0c 两个数交换是经常用到的 xff0c 但在Java 中 xff0c 如果忽略了值传递和引用传递就很容易出错 看一下两个整数交换代码 xff1a public void swap int a int b int t
  • 微信 Mars Android Sample 源码分析

    注 xff1a 原文首发地址 零 前言 Mars 是微信官方开源的跨平台跨业务的终端基础组件 xff0c 具有高质量网络连接模块 长短连接 智能心跳机制 高性能日志模块和网络监测组件等 而整个 Android Sample 是基于 Mars
  • Android NDK 开发:实战案例

    0 前言 如果只学理论 xff0c 不做实践 xff0c 不踩踩坑 xff0c 一般很难发现真正实践项目中的问题的 xff0c 也比较难以加深对技术的理解 所以延续上篇 JNI 的实战Android NDK开发 xff1a JNI实战篇 x
  • Android NDK 开发:CMake 使用

    1 前言 当在做 Android NDK 开发时 xff0c 如果不熟悉用 CMake 来构建 xff0c 读不懂 CMakeLists txt 的配置脚本 xff0c 很容易就会踩坑 xff0c 遇到编译失败 xff0c 一个很小的配置问
  • 性能测试简单介绍

    性能测试介绍 指通过自动化的测试工具模拟多种正常 峰值以及异常负载条件来对系统的各项性能指标进行测试 对性能的认识 从用户的角度 xff1a 从开发的角度 xff1a 从系统管理员的角度 xff1a 那么 xff1f 测试应该关注哪些呢 x
  • U盘系统盘EFI怎么恢复为普通盘?

    U盘重装系统时 xff0c 会使用U盘来制作PE xff0c 装完系统之后 xff0c 插上U盘会发现有两个盘 xff0c 一个是EFI xff0c 一个是主盘 xff0c EFI是占用了几百M空间的 xff0c 打开磁盘管理器就可以查看
  • usb camera(UVC Camera)在android 9.0的解决方法(仅供参考)

    采用的usb驱动是https github com jiangdongguo AndroidUSBCamera这个里面的libusbcamera xff0c 在手机的android 系统未升级到9 0时 xff0c 是可以正常使用的 但是升
  • av_read_frame AVERROR_EOF

    问题描述 xff1a 使用ffmpeg API编码 xff0c 调用av read frame 读取缓存队列中的视频流时 xff0c 提示AVERROR EOF xff0c 导致进程提前终止 原因解析 xff1a 因为ffmpeg的输入为缓
  • 用虚拟机在一台电脑上实现xPC实时仿真

    背景介绍 一般的xPC仿真需要2台电脑来分别实现目标机和宿主机 xff0c 两者之间通过以太网或者串口实现通讯 Matlab的xPC Target提供了一个运行在目标机上的高度剪裁的实时操作内核 xff0c 无需在目标机上面安装任何的操作系
  • 将 TensorFlow 移植到 Android手机,实现物体识别、行人检测和图像风格迁移详细教程

    2017 02 23 更新 贴一个TensorFlow 2017开发者大会的Mobile专题演讲 移动和嵌入式TensorFlow 这里面有重点讲到本文介绍的三个例子 xff0c 以及其他的移动和嵌入式方面的TF相关问题 xff0c 干货很
  • 详解如何将TensorFlow训练的模型移植到Android手机

    前言 本文中出现的TF皆为TensorFlow的简称 先说两句题外话吧 xff0c TensorFlow 前两天热热闹闹的发布了正式版r1 0 xff0c 可感觉自己才刚刚上手 r0 12 xff0c 这个时代发展的太快 xff0c 脚步是
  • 多线程:一个生产者一个消费者

    一个生产者一个消费者 管程法 xff1a 消费者 生产者 被消费的对象 xff08 包子 xff09 缓冲区 xff08 包子铺 xff09 1 被消费的对象 xff08 包子 xff09 span class token keyword
  • 双子天蝎,爱情是不老的传说

    双子天蝎 xff0c 爱情是不老的传说 自注 此文章乃双子座所写 定有主观上的个人倾向 转帖者 xff1a 就是我啦 xff0c 一个双子座的帅哥 xff08 自封 xff09 关于双子和天蝎 xff0c 我是很想很完整的写一些 xff0c
  • 一文速学-Pandas查询索引操作详解+实例代码展示

    目录 前言 一 按列表索引查询 查询单值 nbsp 1 at 单值查询 loc nbsp 2 iat 单值查询 iloc
  • 一文速学-GBDT模型算法原理以及实现+Python项目实战

    目录 前言 一 GBDT算法概述 1 决策树 2 Boosting 3 梯度提升 nbsp 使用梯度上升找到最佳参数
  • python-求1+2!+3!+...+20!的和

    先利用递归方法求一下5 def fact i sum 61 0 if i 61 61 0 sum 61 1 else sum 61 i fact i 1 return sum print fact 5 求1 43 2 43 3 43 43
  • Python常用标准库-sys库一文详解

    目录 前言 一 Sys库概述 二 Sys查看版本信息 1 sys version获取Python版本信息 2 sys api version获取解释器中C的API版本 3 sys getwindowsversion系统功能版本 4 sys
  • Python常用标准库-os库一文详解(一):目录操作

    目录 前言 目录操作 1 1获取当前目录 获取当前工作目录 绝对路径 获取当前工作目录 绝对路径 获取当前目录 获取当前目录的上级目录 1 2创建目录 1 3删除目录 1 4重命名目录 1 5切换目录 1 6获取目录下的文件内容 1 7判断
  • Python常用标准库-os库一文详解(二):文件操作和路径操作

    目录 前言 文件操作 一 读写文件 1 读文件 2 写文件 二 创建文件 三 删除文件 四 重命名文件 五 文件判断 路径操作 1 拼接 2 分离路径 3 获取路径中的文件名 4 获取路径中的路径名 5 获取绝对路径 6 分离文件拓展名 点