zoukankan      html  css  js  c++  java
  • python学习9—文件基本操作与高级操作

    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会自动将不同平台的换行符号均转换为 ,在windows平台上,换行符为
    • w,只写模式,不可读,f = open('filename','w',encoding='utf-8'),写入文件的内容必须是字符串
      • 如果文件存在,则清空文件再进行后续操作
      • 如果文件不存在,则会新建一个文件
      • f.write('contents '),一行一行的将内容写入文件,从当前光标所在位置写入
      • 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
    ', 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
  • 相关阅读:
    centos 7 安装nvidia显卡驱动
    Ubuntu 16.04LTS 安装 MATLAB 2014B
    Linux 查看CPU温度
    pip: unsupported locale setting
    ubuntu 卸载从源码安装的 emacs
    html css使用特殊自定义字体避免侵权
    JS操作iframe父级子级元素,jquery自动点击iframe里按钮
    Iframe标签显示目标网页的指定区域,视频可全屏可缩小
    禁止所有搜索爬虫访问网站指定目录robots.txt
    ThinkPHP5.0、5.1和6.0教程文档合集(免费下载)
  • 原文地址:https://www.cnblogs.com/yangjingxuan/p/11695491.html
Copyright © 2011-2022 走看看