文件操作


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-文件操作(一)的更多相关文章

  1. Python基础篇【第2篇】: Python文件操作

    Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...

  2. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  3. Python文件操作与函数目录

    文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...

  4. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  5. day8.python文件操作

    打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...

  6. 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

    嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...

  7. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

  8. python 文件操作 r w a

    python基础-文件操作   一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件       打开文件时,需要指定文件路径和以何等方式打开文件, ...

  9. Python:文件操作技巧(File operation)(转)

    Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python #  -*- coding: utf8 -*- spath = " D:/dow ...

  10. 小学生都能学会的python(文件操作)

    小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...

随机推荐

  1. Spring,AOP实现功能级别权限验证

    1. 首先是问题出现的原因 对于一个我的一个个人博客网站,我希望游客可以浏览我的博客,但是评论功能是需要登录才能使用 这就需要对某个功能进行权限验证 对于过滤器,拦截器,AOP的区别日后再讨论,现在是 ...

  2. java文件上传工具包

    java 文件上传工具包 主要有两个方法:单文件上传和多文件上传 @Slf4j public class UploadFileUtil { //上传单张图片 public String uploadP ...

  3. 踩坑系列《六》Spring增加事务处理遇到异常解决办法

    当在对数据进行增删改操作时,需要用到事务的处理,所以在业务层中加入@Transactional注解,但是在执行业务操作的前面遇到异常,因此对异常进行抛出,但是数据又诡异地成功保存到数据库了. 解决方法 ...

  4. 在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表

    在我的<FastReport报表随笔>介绍过各种FastReport的报表设计和使用,FastReport报表可以弹性的独立设计格式,并可以在Asp.net网站上.Winform端上使用, ...

  5. 8.3 MHA 搭建

    操作步骤 1.配置主从 1.1 master /etc/my.cnf server-id log-bin skip-name-resolve 1.2 master 建立repl用户 grant rep ...

  6. Java基础- 重写,重构和重载

    重写也称为覆盖, 是指子类与父类的方法名相同但是可以有不同的权限(子类权限需大于父类),返回值(J2SE 5.0以后增加的功能,且子类的返回值必须是父类返回值的子类)或者方法实现. 重写体现了子类补充 ...

  7. std::sort 的注意事项

    Luogu P1177 [模板]快速排序 \(\Large{AC}\) 代码: #include<bits/stdc++.h> using namespace std; int n,a[1 ...

  8. Appium iOS 原理

    一.iOS Appium 原理 1.1 iOS 9.3 系统之前自动化测试 1.1.1 Native 自动化 这是 iOS 9.3 系统之前自动化测试的架构模式.通过 Android Appium 原 ...

  9. python T1119紧急措施

    2021-10-18 题目: 近日,一些热门网站遭受黑客入侵,这些网站的账号.密码及 email 的数据惨遭泄露.你在这些网站上注册若干账号(使用的用户名不一定相同),但是注册时使用了相同的 emai ...

  10. Java(2)详解注释&关键字&常量&变量&标识符

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201497.html 博客主页:https://www.cnblogs.com/testero ...