第十五章 文件读写

2023-11-05

第十五章 文件读写

常见的字符编码格式

  1. python的解释器使用的Unicode(内存)
  2. .py文件在磁盘上使用的是utf-8存储(外存)

对文件的操作

写入文件可以用write()和writelines()
读文件可以用read(),readline()和readlines()
文件的打开模式:只读r,只写w,追加a,二进制用b

打开模式 描述
r 以只读模式打开文件,文件的指针将会放在文件的开头
w 以只写模式打开文件,如果文件不存在则创建,如果文件存在则覆盖原有内容,文件指针在文件的开头
a 以追加模式打开文件,如果文件不存在则创建,文件指针在问文件的开头,如果文件存在,则在文件末尾追加内容,文件指针在文件末尾
b 以二进制方式打开文件,不能单独使用,需要与其他模式一起使用,rb或wb
+ 以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+

文件对象的常用方法

方法名 描述
read([size]) 从文件中读取size个字节或字符的内容返回。若省略[size],则一次性读取文件的所有内容
readline() 从文本文件中读取一行内容
readlines() 把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
write(str) 将字符串str写入文件
writelines(s_list) 将字符串列表s_list写入文本文件,不添加换行符
seek(offset,[whence]) 将文件指针移动到新的位置,offset表示相对于whence的位置:offset为正则向结束方向移动,为负则向开始方向移动。whence为0(默认值)表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算
tell() 返回文件指针的当前位置
flush() 把缓冲区的内容写入文件,但不关闭文件
close() 把缓冲区的内容写入文件,关闭文件,并释放文件对象相关资源
file = open('a.txt','r')
#print(file.readlines())# 将文件内容全部读出来
#print(file.readline())
print(file.read(2))# 可以选择读一部分
file.close()

file = open('b.txt','w')
file.write('Python')
file.close()

file = open('b.txt','a')
file.write('Python')
file.close()

file = open('c.txt','a')
#file.write('hello')
lst = ['java','go','python']
file.writelines(lst)
file.close()

src_file = open('logo.jpg','rb')
target_file = open('copylogo.jpg','wb')
target_file.write(src_file.read())
target_file.close()
src_file.close()

目录操作

os模块

os模块是python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样
os模块操作目录相关函数

函数 说明
getcwd() 返回当前的工作目录
listdir(path) 返回指定路径下的文件和目录信息
mkdir(path,[mode]) 创建目录
makedirs(path1/path2…,[mode]) 创建多级目录
rmdir(path) 删除目录
removedirs(path1/path2) 删除多级目录
chdir(path) 将path设置为当前工作目录
import os
#os.system('notepad.exe') # 打开记事本
#os.system('calc.exe') # 打开计算器
# 直接调用可执行文件
os.startfile('D:\\Program Files\\Tencent\\QQ\\Bin\\qq.exe')


import  os
print(os.getcwd())
#print(os.listdir('../chap15'))

#os.mkdir('newdir2')
#os.makedirs('A/B/C')

#os.rmdir('newdir2')
#os.removedirs('A/B/C')

os.chdir('D:\\pythonProject\\chap15')

os.path模块

os.path模块操作目录相关函数

函数 说明
abspath(path) 用于获取文件或目录的绝对路径
exists(path) 用于判断文件或目录是否存在,如果存在返回True,否则返回False
join(path,name) 将目录与目录或文件名拼接起来
splitext() 分离文件名和扩展名
basename(path) 从一个目录提取文件名
dirname(path) 从一个路径中提取文件路径,不包括文件名
isdir(path) 用于判断是否路径
import os.path
print(os.path.abspath('demo13.py'))
print(os.path.exists('demo13.py'),os.path.exists('demo18.py'))
print(os.path.join('D:\\pythonProject\\vipPython','demo13.py'))
print(os.path.split('D:\pythonProject\\vipPython\chap15\demo13.py'))
print(os.path.splitext('demo13.py'))
print(os.path.basename('D:\\pythonProject\\vipPython\\chap15\\demo13.py'))
print(os.path.dirname('D:\\pythonProject\\vipPython\\chap15\\demo13.py'))
print(os.path.isdir('D:\\pythonProject\\vipPython\\chap15\\demo13.py'))

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

第十五章 文件读写 的相关文章

随机推荐

  • error LNK2019: 无法解析的外部符号 Netbios,该符号在函数 “unsigned char * __cdecl getMACAddress(unsigned char * cons

    我已经正确的加了库 头文件也能找到了 但是还是出现这个问题 说明还是库有问题 原因是我加入的是dcmtk库 是通信有关的 所以还需要在头文件位置加上如下的代码 pragma comment lib netapi32 lib
  • 元数据编辑器--(坑集锦)

    概述 Angular中的输入输出是通过注解 Input和 Output来标识 它位于组件控制器的属性上方 输入输出针对的对象是父子组件 我借鉴的博客地址 https segmentfault com a 1190000007890167 1
  • 人像抠图学习笔记

    目录 人脸分割BiseNetV2 u2net 人脸分割BiseNetV2 宣传的 BiSeNet V2出来了 72 6 的mIOU 156FPS的速度 让分割飞起来 模型30多m TensorFlow平台的 cpu版时间80ms 人脸抠图
  • 两个排序后数组中是否存在相同数字

    因为两个数组都是排好序的 所以只要一次遍历就行了 首先设两个下标 分别初始化为两个数组的起始地址 依次向前推进 推进的规则是比较两个数组中的数字 小的那个数组的下标向前推进一步 直到任何一个数组的下标到达数组末尾时 如果这时还没碰到相同的数
  • Linux下的find指令

    一 概述 因为Linux下面一切皆文件 经常需要搜索某些文件来编写 所以对于linux来说find是一条很重要的命令 linux下面的find指令用于在目录结构中搜索文件 并执行指定的操作 它提供了相当多的查找条件 功能很强大 在不指定查找
  • 第23章组织通用管理

    组织通用管理是项目管理的关键前提和基础 它为项目管理提供思想路线和基本原则与方法 项目管理则是通用管理方法在特定场景下的具体表现 在把项目管理方法运用于实际工作的时候总会表现其通用的方法 反过来说 通用的方法又必定会支配和制约着人们对项目管
  • 理解 Linux 网络栈:Linux 网络协议栈简单总结

    1 Linux 网络路径 1 1 发送端 1 1 1 应用层 1 Socket 应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的 Linux Socket 是从 BSD Socket
  • Window10文件在另一个程序中打开无法删除

    1 打开任务管理 点详细信息 2 打开性能 gt 3 打开下方的 资源监视器 4 句柄中输入文件名 5 鼠标右键结束进程 就可以删除文件啦
  • matlab判断cell为空,问与答1:在VBA代码中如何判断单元格是否为空?

    问 如下图所示的工作表 我希望使用VBA代码将空行的背景色设置为灰色 以便于查看 即将上半部分的工作表变为下半部分的样式 我需要判断某行的单元格为空 然后将该行相应的单元格背景色设置为灰色 如何判断单元格是否为空 答 先看看实现所需效果的代
  • 普通人可以做的七个小众副业,让你告别死工资

    现在有什么副业又简单又可以赚得一定的收入呢 当然是有的 下面分享七个适合普通人操作的七个小众副业 1 手工制品 现在手工制品越来越贵 可以做的种类也很多 比如粘土 针织 滴胶 奶油 手机壳 发夹之类的 又是兴趣 又能赚钱 一举两得 可以在一
  • OPF 难解case

    14bus case 当前线路功率极限为Slmax 调整为0 89 Slmax OPF收敛 调整为0 93 1 0001 Slmax OPF不收敛 调整为1 1 Slmax OPF 收敛 其实整个计算过程中 line flow 是not a
  • 数据结构中的顺序表和链表

    目录 1 顺序表 1 1 存储结构 1 2 顺序表特点 1 3 顺序表应用场景 2 链表 2 1 存储结构 最近在复习数据结构中的线性表 下面总结一下顺序表和链表的区别 1 顺序表 线性表的顺序存储称为顺序表 顺序表使得逻辑地址连续的元素在
  • 深度学习之注意力机制详解(Attention)

    深度学习之注意力机制详解 前言 一 自注意力机制 self Attention 二 代码 前言 深度学习attention机制是对人类视觉注意力机制的仿生 本质上是一种资源分配机制 生理原理就是人类视觉注意力能够以高分辨率接收于图片上的某个
  • PCB设计误区-电容的布局布线-电源是不是必须从滤波电容进入芯片管脚(2)

    PCB设计误区 电容的布局布线 电源是不是必须从滤波电容进入芯片管脚 2
  • ubuntu root密码

    Ubuntu root用户默认是禁止的 需要手动打开才行事实上ubuntu下的所有操作都用不到root用户 由于sudo的合理使用 避免了Ubuntu root用户下误操作而产生的毁灭性问题Ubuntu root账号启用方法 其实我个人认为
  • 梅露可物语虚拟服务器,【图片】【萌新】主界面的使用方法(零基础版)【梅露可物语日服吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 那下面主要讲讲梅露可的货币们 1 钻石 钻石的主要用途有三个 一 抽抽抽 二 碎了这个钻来回复你的ap 三 战斗时候被人打败了有时可以用钻石复活 不过第三个基本是都不用的 因为两瓶元气水或两瓶勇
  • 使用python的retrying库处理尝试多次请求

    功能 一般装饰器api 特定的停止条件 限制尝试次数 特定的等待条件 每次尝试之间的指数增长的时间等待 自定义的异常进行尝试 自定义的异常进行尝试返回结果 最简单的一个使用方法是无论有任何异常出现 都会一直重新调用一个函数 方法 直到返回一
  • js 金额千分位转换

    1 数字转千分位 默认返回当前数字千分位格式 参数说明 number 要格式化的数字 decimals 保留几位小数 dec point 小数点符号 thousands sep 千分位符号 roundtag 舍入参数 默认 ceil 向上取
  • javaWeb,servlet,jsp

    1 servlet是什么 servlet是一种javaEE规范 遵循servlet规范的web应用可以放到不同的web服务器中运行 servlet规范包括 规范了接口 规范了类 规范了一个web应用中应该有哪些配置文件 规范了一个web应用
  • 第十五章 文件读写

    第十五章 文件读写 常见的字符编码格式 python的解释器使用的Unicode 内存 py文件在磁盘上使用的是utf 8存储 外存 对文件的操作 写入文件可以用write 和writelines 读文件可以用read readline 和