python学习9—文件基本操作与高级操作

1. 文件基本操作

  • 打开文件,获得文件句柄:f = open('filename',encoding='utf-8'),open会查询操作系统的编码方式,并按照该编码方式读取文件,若文件使用utf-8编码,则打开需指定编码
  • 通过句柄对文件操作:data = f.read()
  • 关闭文件:f.close()

2. 文件操作模式

  • r,只读模式,不可写,f = open('filename','r',encoding='utf-8')

    • f.readable()判断文件是否可读
    • f.readline()读取文件中的一行,随着光标移动,依次读取各行
f = read('xxx')
f.read() f.readline()  #此处读取时,光标已经到文件最后,则此处读取的值为空
    • f.readlines()读取所有行,并把每一行保存为一个字符串,所有行保存为列表
    • open()包含参数newline,f=open('1.txt','r',newline=''),python会自动将不同平台的换行符号均转换为\n,在windows平台上,换行符为\r\n
  • w,只写模式,不可读,f = open('filename','w',encoding='utf-8'),写入文件的内容必须是字符串
    • 如果文件存在,则清空文件再进行后续操作
    • 如果文件不存在,则会新建一个文件
    • f.write('contents\n'),一行一行的将内容写入文件,从当前光标所在位置写入
    • f.writelines(list),将内容写到一个列表里,在将列表里的各个元素分行写入文件中
    • f.writeable(),判断文件是否可写
  • x,只写模式,若文件不存在则创建该文件,若文件存在则报错
  • a,追加模式,f = open('filename','a',encoding='utf-8')
    • a模式本身就是写模式,只不过是采用追加的方式去写文件
  • r+,读写模式,f = open('filename','r+',encoding='utf-8')
  • w+,x+,a+,写读模式
  • rb,wb,xb,ab,以字节的方式读写,不能指定编码
fr = open('TextFile1.txt','rb')
print(fr.read().decode('gbk')) f = open('test22.py','wb') f.write(bytes('asdfghjkl\n', encoding = 'utf8'))
f.write('中文'.encode('utf8'))

注:从二进制转换为字符串显示为decode(),从字符串变为二进制存储为encode()

自动关闭文件的方式:

with open('file','w') as f:
f.write('asdf') with open('file1','w') as f1, open('file2','w') as f2
f1.write('asdf')
f2.write('ghjkl')

3. 文件操作方法

  1. f.closed,判断文件是否关闭
  2. f.encoding,显示文件打开的编码方式
  3. f.flush(),将内存中文本刷新到文件中,更新文件内容
  4. f.name,文件名
  5. f.tell(),显示当前光标所在位置,按照字节计数
  6. f.seek(0),将光标移动到0位置,按照字节计数
  7. f.read(4),按照字符计数,读取4个字符
  8. f.truncate(10),截取前10个字节,写入原本的文件,覆盖源文件

4. 文件高级操作

  1. f.seek(,0),0表示光标位置采用绝对位置
  2. f.seek(,1),要求文件以b模式打开,采用相对位置,累加
  3. f.seek(,2),采用倒序,以b模式打开,从文件末尾开始移动光标
  4. 循环文件的推荐方式:下面第一种方式读取所有文件内容,然后一行一行的循环;而第二种方式只是一行一行读取文件的内容
for i in f.readlines():
print(i) #推荐
for i in f:
print(i)

5. 读取大文件最后一行

  关键思想:每次增加从文件末尾读取字符串的个数,直到完全读取了最后一行,并用索引[-1]取出读取数据的最后一行。

for i in f:
offs=-10
while True:
f.seek(offs, 2)
data=f.readlines()
if len(data)>1:
print('文件的最后一行是%s' %(data[-1]. decode('utf-8')))
break
offs*=2

python学习9—文件基本操作与高级操作的更多相关文章

  1. Go语言学习教程:xorm表基本操作及高级操作

    在上节内容中,我们介绍了xorm框架表结构的映射规则和表结构的操作.本节课,继续来深入学习表结构基本操作和高级查询的相关功能. 表结构基本操作 对表结构的操作最常见的操作是查询和统计相关的方法,我们首 ...

  2. Python对文件和文件夹的高级操作模块shutil

    shutil模块提供了许多关于文件和文件夹的高级操作. 特别提供了支持文件复制和删除的功能. # 将文件对象fsrc的内容复制到文件类对象fdst.length(可选参数)是缓冲区大小 shutil. ...

  3. Python中对 文件 的各种骚操作

    Python中对 文件 的各种骚操作 python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getc ...

  4. python学习笔记:文件操作和集合(转)

    转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...

  5. python学习总结---文件操作

    # 文件操作 ### 目录管理(os) - 示例 ```python # 执行系统命令 # 清屏 # os.system('cls') # 调出计算器 # os.system('calc') # 查看 ...

  6. Python学习之==>文件操作

    1.打开文件的模式 r,只读模式(默认)[不可写:文件不存在,会报错] w,只写模式[不可读:不存在则创建:存在则删除内容] a,追加模式[不可读:不存在则创建:存在则追加内容] r+,读写模式[可读 ...

  7. python学习8 文件的操作

    本文拷贝了on testing 的<python之文件操作:文件的读写>,只做学习之用 python的文件读写通过 一.用open函数 二.对文件读写操作 三.读取文件位置定位 1. op ...

  8. python学习day8 文件操作(深度学习)

    文件操作 (day7内容扩展) 1 文件基本操作 obj = open('路径',mode='模式',encoding='编码')obj.write()obj.read()obj.close() 2 ...

  9. python学习(11)文件的读写操作

    1.读文件的7种操作模式 操作模式 具体含义 'r' 读取 (默认) 'w' 写入(会先截断之前的内容) 'x' 写入,如果文件已经存在会产生异常 'a' 追加,将内容写入到已有文件的末尾 'b' 二 ...

随机推荐

  1. SpringMVC(IntelliJ IDEA)(详细操作)

    1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.

  2. [JXOI2017]数列

    题目 一个不太一样的做法 当\(A_{i-1}=x\),称\(A_1\)到\(A_{i-2}\)中大于等于\(A_{i-1}\)的最小值\(R\)为上界,\(A_1\)到\(A_{i-2}\)中小于等 ...

  3. Oracle分区表之分区范围扫描(PARTITION RANGE ITERATOR)与位图范围扫描(BITMAP INDEX RANGE SCAN)

    一.前言: 一开始分区表和位图索引怎么会挂钩呢?可能现实就是这么的不期而遇:比如说一张表的字段是年月日—‘yyyy-mm-dd’,重复率高吧,适合建位图索引吧,而且这张表数据量也不小,也适合转换成分区 ...

  4. sed以及awk

    一.sed sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的 内容,处理完成后,把缓 ...

  5. shell位置参数和 shift 命令

  6. 项目案例之Pipeline流水线发布JAVA项目(三)

    项目案例之Pipeline流水线发布JAVA项目(三) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开百度网 ...

  7. (好题)2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest F Pizza Delivery

    题意:给n个点m条边的有向图.每次使一条边反向,问你1到2的最短路变短,变长,还是不变. 解法:遇到这种题容易想到正向求一遍最短路d1,反向再求一遍最短路d2.纪录原图上的最短路为ans,然后分开考虑 ...

  8. Codeforces 1155F 状压DP

    题意:给你一张图,问最少保留多少条边,使得这张图是边双联通分量. 思路:如果一个点集中的点已经是边双联通分量,那么从这个点集中的点x出发,经过若干个不是点集中的点,回到点集中的点y(x可能等于y),那 ...

  9. HIVE了解及SQL基础命令

    hive(数据仓库工具) Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据.它架构在Hadoop之上,总归为大数据,并使得查询和分析方便.并提供简单的sql查询功能,可以将sql语句转 ...

  10. nodejs 静态资源文件与登陆交互

    server2.js var express=require('express'); var expressStatic=require('express-static'); var server=e ...