| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python基础教程(第2版)第十一章 文件和素材 -> 正文阅读 |
|
[Python知识库]Python基础教程(第2版)第十一章 文件和素材 |
1.打开文件open函数:打开文件,返回一个文件对象 ????????open(name[. mode[, buffering]]) ????????name:使用一个文件名作为唯一的强制参数 ????????????????只带一个参数时,获得的是能读取文件内容的文件对象
????????mode(可选参数):模式 ????????????????明确地指定读模式和什么模式参数都不用的效果是一样的 ????????????????使用写模式可以向文件写人内容 ????????????????“b'模式改变处理文件的方法。一般来说,Python假定处理的是文本文件,但如果处理的是一些其他类型的文件(二进制文件),比如声音剪辑或者图像,那么应该在模式参数中增加'b',如:参数rb’可以用来读取一个二进制文件 ????????????????“+”参数可以用到其他任何模式中,指明读和写都是允许的,如:'r+’能在打开一个文本文件用来读写时使用 ????????buffering(可选参数):控制着文件的缓冲 ? ? ? ? ? ? ? ? 如果参数是0或False,I/O就是无缓冲的,即所有的读写操作都直接针对硬盘 ????????????????如果参数是1或True,I/O就是有缓冲的,即Python使用内存来代替硬盘,让程序更快,此时只有使用flush或 者close时才会更新硬盘上的数据 ????????????????大于1的数字代表缓冲区的大小(单位是字节) ? ? ? ? ? ? ? ? 负数代表使用默认的缓冲区大小 2.基本文件方法类文件对象(流):支持一些文件方法的对象 2.1 读和写文件(或流)最重要的能力是提供或者接受数据 如果有一个名为f的类文件对象,那么就可以用f.write方法和f.read方法(以字符串形式)来写入和读取数据 每次调用f.write(string)时,所提供的参数string会被追加到文件中已存在部分的后面
调用f.read时,要告诉流读多少字符(字节)
2.2 管式输出在UNIX的shell,使用管道可以在一个命令后面续写其他的多个命令
????????cat somefile.txt:把somefile.txt的内容写到标准输出 (sys.stdout)? ????????python somescript.py:运行Python脚本somescript,脚本应该是从标准输入读,把结果写入到标准输出 ????????sort:从标准输入(sys.stdin)读取所有的文本,按字母排序,然后把结果写入标准输出 ? ? ? ?管道符号 |:将一个命令的标准输出和下一个命令的标准输入连在一起 somescript.py会从它的sys.stdin中读取数据 (catsomefile.txt写入的),并把结果写入它的sys.stdout (sort在此得到数据)中
随机访问:使用类文件对象seek和teel来直接访问感兴趣的部分 seek (offset[.whence]):把当前位置(进行读和写的位置)移动到由offest定义的位置 ????????whence默认是0(offest必须非负),也就是说偏移量是从文件开头开始计算的,whence也可能被设置为1(相对于当前位置的移动)或者2(相对于文件结尾的移动)
tell:返回当前文件的位置
2.3 读写行file.readline:读取单独的一行(从当前的位置开始直到换行符出现,也读取这个换行符) ????????使用一个非负的整数作为readline的参数可以读取的字符(或字节)的最大值 readlines:读取一个文件中的所有行并将其作为列表返回 writelines:把所有的字符串写入文件(或流) 2.4 关闭文件使用close方法关闭文件 虽然通常来说一个文件对象在退出程序后(也可能在退出前)会自动关闭,但是为了安全起见,要在使用完成后关闭文件 ????????因为Python可能会缓存(出于效率的考虑而把数据临时地存储在某处)写入的数据,如果程序因为某些原因崩溃了,那么数据根本就不会被写入文件 ? ? ? ? 还可以避免在某些操作系统或设置中进行无用的修改,或者用完系统中打开文件的配额 如果想确保文件被关闭,可以使用try/finally语句,并且在finally子句中调用close方法
Python2.5后有专门为这种情况设计的语句,即with语句? ? ????????with语句可以打开文件并且将其赋值到变量上,之后就可以将数据写入语句体中的文件(或执行其他操作),文件在语句结束后会被自动关闭,即使是由于异常引起的结束也是如此
对文件中的数据进行修改时,并不是立刻就会被体现,因为数据可能被缓存了(在内存中临时性地存储),直到关闭文件才会被写入到文件 如果需要继续使用文件(不关闭文件),又想将磁盘上的文件进行更新以反映对文件的修改,那么就要调用文件对象的flush方法 2.5 使用基本文件方法
3.对文件内容进行迭代对文件内容进行迭代以及重复执行一些操作,是最常见的文件操作之一 虚拟函数process:表示每个字符或每行的处理过程
3.1 按字节处理最常见的对文件内容进行迭代的方法是在wile循环中使用read方法
3.2 按行操作当处理文本文件时 ,经常会对文件的行进行迭代而不是处理单个字符
3.3 读取所有内容如果文件不是很大,可以使用不带参数的read方法一次读取整个文件(把整个文件当作一个字符串来读取)
或者使用readlines方法(把文件读入一个字符串列表,在列表中每个字符串就是一行)
3.4 使用fileinput实现懒惰行迭代懒惰行迭代:只读取实际需要的文件部分
3.5 文件迭代器从Python2.2开始,文件对象是可迭代的,可以对文件迭代器执行和普通迭代器相同的操作
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:21:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |