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. 4.Jmeter 快速入门教程(三-2) -- 设置集结点

    集合点:简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点, 还拿那个用户和密码的地方,每到输入用户 ...

  2. dcoker镜像的分层

    镜像分层的好处:复用节省磁盘空间,相同的内容只需加载一份到内存 修改dockerfile之后,再次构建速度加快 docker优化: 1.尽可能地选择体积小的linux发行版,比如alpine 2.尽可 ...

  3. Msys2升级后不能编译

    Msys2升级后不能编译 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839496;} cod ...

  4. fixture实战---通过fixure,解决方法依赖逻辑

    import pytest@pytest.fixture()def login(): print('输入用户名密码登陆') def test_cart(login): print('用例1,登陆后执行 ...

  5. 2018-2-13-安装-aria2

    title author date CreateTime categories 安装 aria2 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23:3 + ...

  6. Thunar 右键菜单等自定义

    Thunar 右键菜单等自定义 可以使用图形界面或者直接编辑配置文件,二者是等价的. 图形界面: 以给"zip,rar,7z"等文件添加"在此位置使用unar解压缩&qu ...

  7. Codeforces Round #556 CF1149D Abandoning Roads

    这道题并不简单,要得出几个结论之后才可以做.首先就是根据Kruskal求最小生成树的过程,短边是首选的,那么对于这道题也是,我们先做一次直选短边的最小生成树这样会形成多个联通块,这些联通块内部由短边相 ...

  8. hightchart 报错 Error in mounted hook: "Error: Highcharts error #17: www.highcharts.com/errors/17"

    这个错误是应该导入hightchart 使用的相关的 东西 ,这里是worldcloud import  Wordcloud    from  'highcharts/modules/wordclou ...

  9. 72.Properties(配置文件)

    Properties(配置文件):主要用于存储配置文件到硬盘上面和读取配置文件 public class Properties extends Hashtable<Object,Object&g ...

  10. Map集合类(一.hashMap源码解析jdk1.8)

    java集合笔记一 java集合笔记二 java集合笔记三 jdk 8 之前,其内部是由数组+链表来实现的,而 jdk 8 对于链表长度超过 8 的链表将转储为红黑树 1.属性 //节点数组,第一次使 ...