zoukankan      html  css  js  c++  java
  • 十四、python沉淀之路--文件操作

    一、文件操作b模式

    1、

    1 # f = open('test11.py','rb',encoding='utf-8')  # 这种情况会报错
    2 f = open('test11.py','rb')    # b 模式不能指定编码方式
    3 data = f.read()
    4 print('直接打印出来:',data)
    5 print('解码打印
    ',data.decode('utf-8'))
    6 f.close()
    1 直接打印出来: b'11111
    22222
    3333
    '
    2 解码打印
    3  11111
    4 22222
    5 3333

    总结:字符串 -------encoding ------->> bytes
               bytes --------decode --------->> 字符串

    例2

     1 f = open('test22.py','wb')
     2 f.write(bytes('99999
    ',encoding='utf-8'))
     3 f.write('北京'.encode('utf-8'))
     4 f.close()
     5 
     6 f1 = open('test22.py','br')
     7 data = f1.read()
     8 print('原码打印',data)
     9 print('解码打印
    ',data.decode('utf-8'))
    10 f1.close()
    1 原码打印 b'99999
    xe5x8cx97xe4xbaxac'
    2 解码打印
    3  99999
    4 北京

    注:原码打印和解码打印的区别,写文件前,即在打开的时候不能指定编码格式。只有在写的时候才指定编码格式。

    二、文件操作

    1、

    1 f = open('练习.txt',"r+",encoding='utf-8')
    2 print(f.read())
    3 f.write('1234556789
    ')
    4 print(f.read())
    5 f.close()
    1 1234556789

    2、closed,encoding, flush(),readlinse() 的使用

    1 f = open('练习.txt',"r+",encoding='utf-8',newline='')
    2 print(f.closed)     # closed 判断文件是否关闭
    3 print(f.encoding)   # 检查是哪种编码格式
    4 f.flush()           # 写完内容后是暂时存在了缓存里面,通过flush()函数冲刷一下,就将内容保存在了内存、# f.flush() #讲文件内容从内存刷到硬盘
    5 print(f.readlines())  #将所有内容以列表形式打印出来,
    1 False
    2 utf-8
    3 ['
    ', '1234556789
    ', '1234556789
    ']

    3、tell的使用,打印当前所在位置

    1 f = open('练习.txt',"r+",encoding='utf-8',newline='')
    2 print(f.tell())
    3 print(f.readline())     #  因为12345 后还有
    ,没有显示出来
    4 print(f.tell())

    4、seek的使用,(是以字节为单位的)

     1 f = open('练习.txt',"r+",encoding='utf-8',newline='')
     2 f.write('my name is cainiao who is from earth')
     3 f.close()
     4 
     5 f1 = open('练习.txt','r+',encoding='utf-8')
     6 print(f1.read())
     7 
     8 f1.seek(3,0)  #“0”代表从文件开头开始偏移,偏移3个单位
     9 print(f1.tell())
    10 print(f1.read(3))
    11 print(f1.read(6))  #从偏移之后的指针所指的位置,开始读取6个字符
    12 print(f1.tell())
    13 
    14 print(f1.readline())
    15 # print('看看是否到了最后:',f1.read(5))
    16 
    17 print(f1.seek(5,0))
    18 print(f1.seek(3,1))
    19 print(f1.seek(0,2))  #“2”代表从末尾算起,“0”代表偏移0个单位
    1 nam
    2     print(f1.seek(3,1))
    3 e is c
    4 io.UnsupportedOperation: can't do nonzero cur-relative seeks
    5 12
    6 ainiao who is from earth
    7 5

    5、读取大文件中最后一行

     1 f=open('练习.txt','rb')
     2 for i in f:
     3     offs=-10
     4     while True:
     5         f.seek(offs,2)
     6         data=f.readlines()
     7         if len(data) > 1:
     8             print('文件的最后一行是%s' %(data[-1].decode('utf-8')))
     9             break
    10         offs*=2
  • 相关阅读:
    c# 反射应用之工厂
    UnityContainer 实现DI
    TinyMCE 的音乐插件/mp3 music insert plugin
    Django on IronPython and Windows
    说说分页
    Katze 简单的.net "ORM"框架
    Discuz!NT在64位Windows下运行的问题
    恐怖的迅雷
    基于Gettext的asp.net网站多语言解决方案
    微软是如何输掉API之战(下)
  • 原文地址:https://www.cnblogs.com/jianguo221/p/8976457.html
Copyright © 2011-2022 走看看