• day8 文件操作


    文件基本操作

    1 # 打开文件
    2 f = open("小重山","r",encoding="utf-8")
    1 # readline 方法 只查看一行
    2 a = f.readline()
    3 print(a)
    4 print(f.readline()) # 打印的时候会打印出来每行的最后的换行符
    1 #readlines 方法 查看全部行 可for循环进行遍历 并对每一行进行特殊操作比如加点东西去空格之类的
    2 print(f.readlines())
    1 #关闭文件
    2 f.close() 

    文件打开方式

      文件的模式:r , w , a ,默认打开文件就是只读模式。
     1 f = open("陈粒","r",encoding="utf-8")     # open 会检查系统的编码,然后用系统的编码方式去检索句柄来打开文件
     2 # data = f.read()                        # 获取读取内容
     3 # print(data)
     4 print(f.readable())                        # 判断是否可读
     5 print("第一行",f.readline(),end="")        # 按行读,格式就是 .readline() 无参数可以加。就是度一行
     6 print("第二行",f.readline(),end="")        # 读取的时候是按照光标位置读
     7 print("第三行",f.readline(),end="")
     8 print("第四行",f.readline(),end="")
     9 print("第五行",f.readline(),end="")
    10 print("第六行",f.readline(),end="")
    11 f.close()                                # 一直不关会占用操作系统的资源无法释放
    1 # w,写模式,不论是否存在只要写就会清除内容然后重建相同名字的文件
    2 f = open("陈粒","w",encoding="utf-8")
    3 # f.read()                                    # 写模式是不可读的
    4 f.write("1111111
    ")
    5 f.write("222222222
    ")
    6 # f.write(123)                                # 写的时候必须写的是字符串,其他会报错
    7 f.writable()                                # 判断是否可写
    8 f.writelines(["456
    ","86
    ","5
    "])        # 写入列表
    9 f.close()
    1 # r+ 读写模式
    2 f = open("陈粒1","r+",encoding="utf-8")
    3 f.write("写在文件最后")
    4 f.close()

    光标的操作

    1 # 查看当前的光标位置
    2 print(f.tell())
    3 print(f.read(2))
    4 print(f.tell())
    5 
    6 # 调整光标位置
    7 f.seek(0)
    8 print(f.tell())
     1 f = open("seek.txt","rb")
     2 print(f.tell())
     3 f.seek(10)
     4 f.seek(10,0)            # 默认的工作模式就是 0 ,绝对位置,从头开始移动
     5 f.seek(10,1)            # 工作模式为 1 ,相对位置,从当前的光标位置才移动
     6 print(f.tell())
     7 f.seek(-3,1)            # - 可以像左移动
     8 print(f.tell())
     9 f.seek(-3,2)            # 工作模式为 2 ,从末尾开始倒着读,倒着必须要用负数想做移动
    10                         # 已经最末尾了,怎么再向右移动?石乐志
    11                         # 日志文件的最后追加是很多的,这个命令查询日志很好用。
    12 print(f.tell())

    创建进度条

    1 # 进度条的创建
    2 import  sys,time
    3 for i in range(30):
    4     sys.stdout.write("*")
    5     sys.stdout.flush()
    6     time.sleep(0.1)

    文件修改

    1 # 文件修改
    2 src_f = open("xxx","r",encoding="utf-8")
    3 data = src_f.readlines()
    4 src_f.close()
    5 print(data)
    6 drc_f = open("xxx","w",encoding="utf-8")
    7 # drc_f.writelines(data)
    8 drc_f.write(data[0])
    9 drc_f.close()
    1 # 完成文件修改的更高端的操作
    2 with open("xxx","r",encoding="utf-8") as src_f,
    3         open("xxx_new","w",encoding="utf-8") as dst_f:
    4     data = src_f.read()
    5     dst_f.write(data)
    1 # 不在需close ,with open as 方法
    2 with open("a.txt","w")as f:
    3     f.write("yangtuo
    ")

    其他整合操作

     1 f = open("a.txt","w",encoding="utf-8",newline="")     # 默认的编码方式为系统的方式,
     2 # newline读取转换方式 ,windows的回车是
     ,如果默认的话,会按照
     记录,这样可以将回车只用
    
     3 
     4 print(f.closed)     # 查看文件是否关闭,false 表示未关闭
     5 
     6 print(f.encoding)    # 查看文件打开的编码方式,而不是文件本身的编码方式
     7 
     8 f.flush()            # 即时的刷新,系统会自动保存但是有延时,手动刷新
     9 
    10 print(f.read(7))            # 读文件,从当前光标位置按照字符数量来读,
    11                             # 除了read是按字符,其他都是按字节
    12 
    13 print(f.readline())        # 按行读,只读一行
    14 
    15 print(f.readlines())        # 按行读且将读取的内容放在列表里面
    16 
    17 f.tell()            # 显示目前的光标位置
    18 
    19 f.seek(5)            # 移动光标位置,数字表示字节数,不是按照字符数
    20                     # 比如一个汉字三个字节。你只读一个字节。这个汉字是无法显示的,
    21                     # utf-8的汉字是三个字节为单位存储
    22 
    23 f.truncate(10)    # 从头开始截取到第10个字节,其他都丢了
    24                     # 不可以用w w+ 的方式打开啊。用w打开文件内容会清空你还截取个p
    25 
    26 f.close()        # 关闭文件

    查看大文件最后一行的常用方法,通常用于日志文件的查询
     1 # 如何查看文件的最后一行,使用了seek的玩法
     2 # 循环文件的方式,一行一行的
     3 for i in f:
     4     offs = -10                             # 定义一个偏移量
     5     while True:                            # 定义一个死循环
     6         f.seek(offs,2)                    # 将光标移动到文章末尾向前偏移量大小的位置
     7         data = f.readlines()            # 保存然后读出来光标往后的内容列表保存起来
     8                                         # 其实就是你偏移量的内容
     9         if    len(data) >1 :                # 如果列表长度超过 1 ,表示已经读取到了最后一行,直接打印就可以了。
    10                                         # 如果列表长度没超过 1 ,表示没读完最后一行,再循环读几次偏移量大小。
    11             print("文件的最后一行是%s" %(data[-1].decode("utf-8")))
    12             break
    13         offs *= 2

  • 相关阅读:
    HDC,CDC,CWindowDC,CClientDC,CPaintDC基础 笑风生 博客频道 CSDN.NET
    用web用户控件的方式添加到webpart,使用ajax实现无刷新总结
    .net 中利用owc 画制图表
    未安装在此服务器场中,无法添加到该范围
    敏捷软件开发宣言及原则
    调试 Windows SharePoint Services Workflow
    系统提示"System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本"解决办法
    安装及删除网站模板
    无法安装功能“265e193c6477431e8d3c98f51e6d3247”,因为加载事件接收器程序集“Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=a5e1d8429183b844”
    表单加载出错
  • 原文地址:https://www.cnblogs.com/shijieli/p/9681675.html
Copyright © 2020-2023  润新知