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

前言

Python 标准库非常庞大,所提供的组件涉及范围十分广泛,正如以下内容目录所显示的。这个库包含了多个内置模块 (以 C 编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O,此外还有大量以 Python 编写的模块,提供了日常编程中许多问题的标准解决方案。其中有些模块经过专门设计,通过将特定平台功能抽象化为平台中立的 API 来鼓励和加强 Python 程序的可移植性。 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.读文件

python 复制代码
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个字符替换为新的字符,替换长度由替换的内容长度决定

python 复制代码
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)

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

python 复制代码
# 文件存在打开,文件不存在新增
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)

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

python 复制代码
# 追加模式打开文件,必须具有写权限
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)

二、创建文件

创建空文件 ​

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

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

python 复制代码
# 创建文件并写入数据时须具有写权限
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)

三、删除文件 ​

python 复制代码
# 文件不存在时报错
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文件目录下。 ​

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。 ​

python 复制代码
# 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.拼接

lua 复制代码
print(os.path.join("txt", 'file', 'user1', 'server.log'))

2. 分离路径

python 复制代码
print(os.path.split(r"C:\Users\10799\get_info\OS\newTest\txtfile.txt"))

3.获取路径中的文件名

python 复制代码
print(os.path.basename(r"C:\Users\10799\get_info\OS\newTest\txtfile.txt"))

4.获取路径中的路径名

python 复制代码
print(os.path.dirname(r"C:\Users\10799\get_info\OS\newTest\txtfile.txt"))

5.获取绝对路径

python 复制代码
print(os.path.abspath(r"newTest\txtfile.txt"))

6.分离文件拓展名

python 复制代码
print(os.path.splitext(r"C:\Users\10799\get_info\OS\newTest\txtfile.txt"))

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

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

相关推荐
小二·1 小时前
java基础面试题笔记(基础篇)
java·笔记·python
小喵要摸鱼2 小时前
Python 神经网络项目常用语法
python
一念之坤4 小时前
零基础学Python之数据结构 -- 01篇
数据结构·python
wxl7812274 小时前
如何使用本地大模型做数据分析
python·数据挖掘·数据分析·代码解释器
NoneCoder4 小时前
Python入门(12)--数据处理
开发语言·python
LKID体5 小时前
Python操作neo4j库py2neo使用(一)
python·oracle·neo4j
小尤笔记5 小时前
利用Python编写简单登录系统
开发语言·python·数据分析·python基础
FreedomLeo15 小时前
Python数据分析NumPy和pandas(四十、Python 中的建模库statsmodels 和 scikit-learn)
python·机器学习·数据分析·scikit-learn·statsmodels·numpy和pandas
007php0076 小时前
GoZero 上传文件File到阿里云 OSS 报错及优化方案
服务器·开发语言·数据库·python·阿里云·架构·golang
Tech Synapse6 小时前
Python网络爬虫实践案例:爬取猫眼电影Top100
开发语言·爬虫·python