一、 引言

本章老猿主要介绍了Python 内置io模块的文件操作相关功能,其实除了内置io模块可以进行文件操作外,Python的不同模块还提供了多种文件操作方式,下面简单将这些模块和方法介绍一下。

二、 使用上下文管理器打开文件读写

上下文管理器老猿还没学过,暂时也没想花时间去研究,在这里大家记住使用方法就可以了。

  1. 语法:

    with open(文件名,读写模式) as 文件对象:

    对文件对象进行操作。
  2. 语法释义

    1)使用with…as语句来开启上下文管理器;

    2)open就是io模块的open,语法也是一样;

    3)文件对象就是open返回的文件对象。

    从以上语法来看,使用上下文管理器实际上与直接使用open差不多,只是将文件对象放到了as后面,同时文件读取后不需要取关闭,上下文管理器会自动关闭文件

三、 使用fileinput按行读取文件

fileinput属于fileinput模块,因此使用前需要导入该模块。

  1. 语法:

    fileinput.input(文件名)
  2. 语法释义:

    打开文件名指定的文件,返回一个fileinput.FileInput的对象,该对象可以使用readline读取文件内容,同时该对象还是一个可操作文件的迭代对象,直接使用for…in进行迭代读取文件内容。如:

    for line in fileinput.input(filename):print(line)

四、 将打开的文件使用迭代访问方式处理

fileinput.input打开的文件可以通过迭代方式访问,实际上open打开的文件也可以:

1、 使用上下文管理打开文件后迭代读取,如:

with open(r’c:\temp\test.txt’) as f:

for line in f:print(line)

2、 直接打开文件迭代读取

for line in open(r’c:\temp\test.txt’)::print(line)

注意:文件访问后不会关闭

五、 使用os模块进行文件操作

在前面章节介绍open函数时,我们提及了os模块的open函数,实际上os模块有完整的读写、定位函数,只是都是底层的操作函数。

1、 os.open(path, flags, mode=0o777, *, dir_fd=None)打开文件,返回一个文件描述符

2、 os.lseek(fd, pos, how)进行文件指针定位;

3、 os.read(fd, n)读取文件

4、 os.write(fd, str)写入文件

5、 os.fchown(fd, uid, gid)改变文件的归属用户和归属组

6、 os.close(fd)关闭文件

具体每个函数的参数释义老猿在此不详细介绍,请大家参考Python官网os模块的文档:https://docs.python.org/zh-cn/3/library/os.html#module-os

六、 使用shelve模块操作文件

shelve模块是个特殊的文件操作模块,因为它对应的文件用于存储字典数据。使用时,先使用shelve.open打开文件,返回一个shelve.DbfilenameShelf,使用这个对象就像使用一个字典一样。举例:

>>> import shelve
>>> f=shelve.open(r"c:\temp\d.txt")
>>> f['1']=[10,11,12]
>>> f['2']=[20,21,22]
>>> f.close()
>>> type(f)
<class 'shelve.DbfilenameShelf'>
>>>

具体语法请参见Python官网:https://docs.python.org/zh-cn/3/library/shelve.html#module-shelve

本节老猿介绍了几种有别于前面介绍的io模块文件操作的文件操作方法,包括使用io模块进行文件迭代访问,在某些场景下可以使得写的代码很精干。

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


请大家多多支持,点赞、评论和加关注!谢谢!

第9.12节 Python中其他文件操作方式的更多相关文章

  1. 第14.12节 Python中使用BeautifulSoup解析http报文:使用select方法快速定位内容

    一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>和<第14.11节 Python中使用BeautifulSo ...

  2. 第14.11节 Python中使用BeautifulSoup解析http报文:使用查找方法快速定位内容

    一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>介绍了BeautifulSoup对象的主要属性,通过这些属性可以访 ...

  3. python中对文件、文件夹,目录的基本操作

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...

  4. 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析

    一. 引言 <第8.21节 Python中__lt__.gt__等 "富比较"("rich comparison")方法用途探究>和<第8.2 ...

  5. 第8.28节 Python中使用__setattr__定义实例变量和实例方法

    一. 引言 根据前面章节介绍的内容,我们知道实例变量.实例方法的定义可以通过以下方法进行: 在类体中直接定义实例变量.实例方法: 在实例方法中定义实例变量.实例方法: 在类体外调用方使用赋值语句赋值定 ...

  6. 第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问

    一. 引言 在<第14.8节 Python中使用BeautifulSoup加载HTML报文>中介绍使用BeautifulSoup的安装.导入和创建对象的过程,本节介绍导入后利用Beauti ...

  7. 第14.8节 Python中使用BeautifulSoup加载HTML报文

    一. 引言 BeautifulSoup是一个三方模块bs4中提供的进行HTML解析的类,可以认为是一个HTML解析工具箱,对HTML报文中的标签具有比较好的容错识别功能.阅读本节需要了解html相关的 ...

  8. 关于Python中的文件操作(转)

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  9. python中 对文件的读写操作 以及如何边写入 边保存flush()

    转自:https://blog.csdn.net/t8116189520/article/details/78854708 首先 python中打开文件大致常用的几类如下: 1.写入文件write # ...

随机推荐

  1. VSCcode中使用git

    1.配置 文件 -> 首选项 -> 配置 出现json格式的配置项,左侧为默认设置,右侧为自定义设置: 加一行: "git.path":  Git目录下cmd下的git ...

  2. 为什么要谨慎使用Arrays.asList、ArrayList的subList?

    1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: List<Integer> statusList = Arrays.asL ...

  3. 等效介质理论模型---利用S参数反演法提取超材料结构的等效参数

    等效介质理论模型---利用S参数反演法提取超材料结构的等效参数 S参数反演法,即利用等效模型的传输矩阵和S参数求解超材料结构的等效折射率n和等效阻抗Z的过程.本文对等效介质理论模型进行了详细介绍,并提 ...

  4. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  5. python0why study python

    Python 越来越火爆 Python 在诞生之初,因为其功能不好,运转功率低,不支持多核,根本没有并发性可言,在计算功能不那么好的年代,一直没有火爆起来,甚至很多人根本不知道有这门语言. 随着时代的 ...

  6. vue实现带logo的二维码/商品条形码/打印商品吊牌

    一.带logo的二维码 1.安装 npm install vue-qr --save 2.在页面或组件中使用 <template> <div id="qrcode" ...

  7. table表格标签的属性

    table标签目前前端主流推荐HTML.CSS.JS三者分离,实际使用table标签的CSS样式代码还是采用table的style的属性和值来进行外观样式控制. 习惯样式: 1 table { 2 d ...

  8. dp:322. Coin Change 自下而上的dp

    You are given coins of different denominations and a total amount of money amount. Write a function ...

  9. python之路 《四》 字典

    python中的字典使得python来解决问题变得更方便,顾名思义,就是当我知道关键字(key)那么我就可以通过key来找到与之对应的信息. 简单的来说字典是另一种可变容器模型,且可存储任意类型对象. ...

  10. 【SpringCloud】consul注册中心注册的服务为内网(局域网)IP

    一.前因 最近在做公司的一个微服务项目,技术架构为spring cloud + consul + SSM. 当我写完一个功能要在本地测试时,发现服务运行成功,但是前后端联调报500错误. 当时的第一个 ...