python-文件操作(一)
文件操作

1、什么是文件?
- 文件是操作系统暴露给用户操作硬盘的‘接口’。
2、操作文件的方法:
- 打开文件:open()
- 关闭文件:close()
3、路径分类:
- 绝对路径
- 相对路径
4、如何取消特殊字符的功能:
- 在路径前加‘r’
- 在\前再加一个\
5、对文件的操作有:读、写、追加内容
- r:路径存在只读模式不能修改,路径不存在直接报错
- w:路径存在每打开一次都会清除文件内的内容,路径不存在自动创建
- a:路径存在会将文件指针直接移动到文件末尾,在文件不存在时会创建空文档
实例如下:
# 1.以只读,utf8编码模式打开当前路径下的a.txt文件
#首先在当前路径创建a.txt文件
res = open('a.txt',mode='r',encoding='utf8')
# 查看内容
print(res.read())
# 对文件操作完必须关掉,释放资源
res.close()
res1 = open(r'E:\python item\Old_BoyClass_second\a.txt',mode='r',encoding='utf8')
# 绝对路径前加r,取消\a原有的功能
print(res1.read())
# 对文件操作完必须关掉,释放资源
res1.close()
#结果,上下两种操作结果一样
我要坚持学python!
我要坚持学python!
#2. 以写,utf8编码模式打开当前路径下的a.txt文件
res = open('a.txt', mode='w', encoding='utf8')
# 输入hello内容,清除了以前的我要坚持学python!
res.write('hello')
# 对文件操作完必须关掉,释放资源
res.close()
#结果,在a.txt文件中存入
hello
#3. 以追加内容,写功能,utf8编码模式打开当前路径下的a.txt文件
res = open('a.txt', mode='a', encoding='utf8')
# 输入hello内容,清除了以前的我要坚持学python!
res.write(' world\n')
res.write('python\n')
# 对文件操作完必须关掉,释放资源
res.close()
#结果,在a.txt文件中追加world和python字符
world
python
6、with上下文管理
解决了总是忘记关闭文件的问题,用with关键字执行完代码后会自动关闭文件,释放资源
with语法格式:
with open(‘文件名’,’r/w’) as f:
f.读操作/f.写操作
with还可以同时打开多个文件:
with open(‘文件名1’,’r/w’) as f1, open(‘文件名2’) as f2:
pass
实例如下:
# with关键字上下文管理
# 打开一个不存在的文件,相当于创建
with open('b.txt', mode='w') as f1:
f1.write('hello world!')
# 打开多个文件,相当于创建
with open('c.txt',mode='w') as f2,open('d.txt',mode='w') as f3:
#分别在c.txt文件和d.txt文件中存入Hammer和python
f2.write("Hammer")
f3.write('python')
#结果
hello world!
Hammer
python
7、文件操作方法详细:
1、r-读操作
- read():一次性读取文件所有内容
- readline():每次只读一行内容
- readlines():读取文件所有内容,组织成列表,每个元素是文件的每行内容
- readable():判断当前文件是否具备读的能力
实例如下:
# 选择提前创建好的文件,然后打开验证功能
with open(r'E:\python item\Old_BoyClass_second\test.txt', mode='r', encoding='utf8') as read_f:
# 读取文件所有内容
# print(read_f.read())
# 结果
'''
只读第一行
只读第二行
只读第三行'''
# 每次只读取一行
# print(read_f.readline())
#结果
# 只读第一行
# 读取文件所有内容,转换成列表的形式
# print(read_f.readlines())
#结果
# ['只读第一行\n', '只读第二行\n', '只读第三行']
# 判断文件是否可读
print(read_f.readable())
#结果
True
2、w-写操作
write():往文件内写入文本,写入的内容必须是字符串(文本)
writelines():可以将列表中多个字符串元素全部写入,只能写字符串类型
writeable():判断该文件是否可以执行写操作
实例如下:
# 选择提前创建好的文件,然后打开验证功能
with open(r'E:\python item\Old_BoyClass_second\test.txt', mode='w', encoding='utf8') as write_f:
# 每次执行写操作,会清空文件以前的内容,再添加写入的内容
# write_f.write('清空文件内容,写入第一行')
# 可以将列表内多个元素同时写入
# write_f.writelines(['Hammer', 'Ze', '求关注'])
# 判断该文件是否具有写功能
print(write_f.writable())
8、文件优化操作
当使用read()方法遇到比较大的文件时一次性读取文件所有内容会可能造成内存溢出的情况,为了解决上述问题,利用逐行读取文件内容的方式,利用for循环,读取一行结束后python垃圾回收机制会回收释放空间。
实例如下:
# 选择提前创建好的文件,然后打开验证功能
with open(r'E:\python item\Old_BoyClass_second\test.txt', mode='r', encoding='utf8') as write_f:
for line in write_f:
# 遍历的结果自带换行,不要换行可以end = ' ',来取消换行
print(line,end='')
9、文件操作模式
文本模式—— t
- rt :读
- wt :写
- at :追加内容
文件操作默认为文本模式,该模式只能操作文本文件,以字符串为参数,必须指定encoding参数
实例如下:
# 选择提前创建好的文件,然后打开验证功能
# 文本模式
with open(r'test.txt', 'rt', encoding='utf8') as f:
print(f.read())
# 结果
# 一
# 二
# 三
# 四
# 五
with open(r'test.txt', 'wt', encoding='utf8') as f:
f.write('六')
# 结果
# 六
with open(r'test.txt', 'at', encoding='utf8') as f:
f.write('七')
# 结果
# 六七
二进制模式—— b
- rb :读
- wb :写
- ab :追加
该模式可以操作任意类型的文件,该模式不需要指定encoding参数,以二进制位符号位基本单位
实例如下:
# 选择提前创建好的文件,然后打开验证功能
# 二进制模式,不用写encoding参数,写encoding参数会报错
# 二进制模式操作文本文件,读功能
with open(r'test.txt', 'rb') as f:
print(f.read())
# 结果
# b'\xe5\x85\xad\xe4\xb8\x83'
# 二进制模式操作文本文件,追加/写功能
with open(r'test.txt', 'ab') as f1:
# 只能写二进制符号,不然会报错
# f1.write('abc123')
# TypeError: a bytes-like object is required, not 'str'
# 只能通过编码的形式来写入文本encode
a = 'abc123'
f1.write(a.encode())
# 结果
# abc123
# 再解码回来
print(b'abc123'.decode())
# 结果
# abc123
# 二进制操作图片文件
with open(r'E:\python item\Old_BoyClass_second\点赞.gif','rb') as f3:
print(f3.read())
# 结果太眼花了大家自己输出一下吧
练习题:
# 3.写一个简易的拷贝工具支持所有的文件类型
#copy test.txt文件生成copytest.txt,因为支持所有文件所以选择二进制模式操作文件
with open(r'test.txt', 'rb') as read_f, open(r'copytest.txt', 'ab') as copy_f:
# 用for循环打印读取的内容,防止内存溢出
for content in read_f:
# print(content)
# 写入遍历得到的内容
copy_f.write(content)

点个赞再走吧!
点个赞再走吧!
点个赞再走吧!
python-文件操作(一)的更多相关文章
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python文件操作与函数目录
文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- day8.python文件操作
打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...
- 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...
- Python之路Python文件操作
Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...
- python 文件操作 r w a
python基础-文件操作 一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件时,需要指定文件路径和以何等方式打开文件, ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- 小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...
随机推荐
- xLua中C#调用Lua
C#调用Lua 一.前提 这里使用的是XLua框架,需要提前配置xlua,设置加载器路径: 可以参考之前的Blog:<xlua入门基础>: 二.C#调用Lua全局变量 lua中所有的全局变 ...
- centos8安装MySQL8——通过yum
centos8上通过yum安装MySQL,过程简单,不易出错 1.检查系统是否已安装MySQL相关,如果有则全部清除干净 #列出MySQL相关的安装包 rpm -qa | grep mysql #依次 ...
- 从零入门 Serverless | Serverless Kubernetes 应用部署及扩缩容
作者 | 邓青琳(轻零) 阿里云技术专家 导读:本文分为三个部分,首先给大家演示 Serverless Kubernetes 集群的创建和业务应用的部署,其次介绍 Serverless Kuberne ...
- 使用mobaXtrem显示CentOS图形
安装环境 yum install -y xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 \mesa-l ...
- k8s学习笔记(2)- Rancher2.x部署springboot应用及高可用、扩容
前言:上一篇介绍基于k3s环境,使用kubectl部署springboot简单项目应用,本篇介绍基于rancher2.x部署应用程序 1.上篇已部署一个springboot应用,我们可以通过ranch ...
- mysql update语句的执行流程是怎样的
update更新语句流程是怎么样的 update更新语句基本流程也会查询select流程一样,都会走一遍. update涉及更新数据,会对行加dml写锁,这个DML读锁是互斥的.其他dml写锁需要等待 ...
- [JUC-5]ConcurrentHashMap源码分析JDK8
在学习之前,最好先了解下如下知识: 1.ReentrantLock的实现和原理. 2.Synchronized的实现和原理. 3.硬件对并发支持的CAS操作及JVM中Unsafe对CAS的实现. 4. ...
- 工厂模式--摆脱你日复一日new对象却依旧单身的苦恼!
前言 每每谈及到Java,就不免会想到一个悲伤的事实:你是否每天都在new对象,却依然坚守在单身岗上屹立不倒.(所谓面向对象编程hhh),这篇来学一下工厂模式,摆脱new对象的苦恼! 知识点 传统工厂 ...
- 保护模式篇——TLB与CPU缓存
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- SpringMVC、Spring、MyBatis整合(IDEA版)
1 环境准备 1.1 软件架构 JDK 1.8 Spring 4.x Mybatis 3.x Maven 3.x MySQL 5.7 1.2 创建数据库 创建数据库,数据库名ssm-demo,字符集u ...