zoukankan      html  css  js  c++  java
  • Python-04 基础语法-文件操作

    1 Python文件操作

    文件打开

    f = open("test",encoding="utf-8").read()
    #打开文件读取test文件中的全部内容
    

    注意:该文件要存在

    open()方法的完整写法以及参数说明:

    open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
    

    参数解释:

    参数 含义
    file 必需,文件路径(相对或者绝对路径)
    mode 可选,文件打开模式
    buffering 设置缓冲
    encoding 一般使用utf8
    errors 报错级别
    newline 区分换行符
    closefd 传入的file参数类型

    mode参数解释

    mode类型 含义
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    b 二进制模式
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
    wb 以二进制格式打开一个文件只用于写入。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    文件读

    f = open("test","r",encoding="utf-8")# r代表只能读
    #f对象表示一个文件句柄,就是相当于一个指针
    data =f.read();
    print(data)
    

    注意:该文件要存在,不存在则会报错

    f = open("test","r",encoding="utf-8")
    print(f.readlines())
    # 读取文件成为一个列表,每行作为一个元素
    

    文件写

    ​ 在对文件进行写的时候,如果写入的文件不存在,那么就会自动创建该新文件.

    f = open("test2","w",encoding="utf-8")
    f.write("我喜欢你")
    #注意,此时不能够读取文件,调用read()方法会报错
    

    文件读写

    #打开一个文件用于读写。文件指针将会放在文件的开头。
    f = open("test","r+",encoding="utf-8")
    print(f.readline())
    f.write("哈哈哈")
    #查看文件,可以看到哈哈哈被写进文件
    

    文件写读(不常用)

    ​ 文件写读模式:如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

    f = open("test2","w+",encoding="utf-8")
    f.write("哈哈哈")
    

    文件追加

    ​ 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

    f = open("test2","a+",encoding="utf-8")
    f.write("ppp")
    f.flush()#刷入硬盘
    

    二进制文件读

    一般二进制文件用于网络传输或者用于读取视频文件

    f = open("test","rb")
    print(f.readline())
    # 结果模式:>>>b'Oh, yesterday when I was young
    '
    

    二进制文件写

    在进行二进制文件写入的时候,如果写入一个字符串,那么需要将字符串转化为字节类型,字符串不转码是无法写入文件的.

    f = open("test","wb")
    f.write("你好".encode())
    

    注意:进行二进制文件读写操作的时候,不要指定encoding,该文件会以二进制进行编码

    文件常用方法

    方法名 含义
    file.tell() 打印指针位置,按字符计数统计
    file.seek(0) 指针回到指定未知,0代表回到文件初始位置
    file.encoding 打印文件的编码
    file.errors 处理异常
    file.name 打印文件名称
    file.seekable 判断光标是否可以移动
    file.flush() 将缓冲区文件刷新到硬盘
    file.close() 关闭文件,关闭后不能读写
    file.read([size]) 从文件读取指定的字节数,如果未给定或为负则读取所有。
    file.readline([size]) 读取整行
    file.write(str) 将字符串写入文件,返回的是写入的字符长度。
    file.writelines(list) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

    进度条打印

    使用flush缓存实时刷新

    import  sys,time
    
    #打印进度条
    for i in range(10):
        sys.stdout.write("#")
        sys.stdout.flush()
        time.sleep(0.5)
    

    打印文件指定行

    小文件操作

    for index,line in enumerate(f.readlines()):
    		prin(line.strip())
    		if index==5:
    			print("----")
    			continue
    

    大文件操作

    #迭代器、边读取边写入,缓冲区保留一行
    		count=0
    		for line in f:
    			if count==9:
    				print(line)
    				count+=1
    				continue
    			print(line)
    
  • 相关阅读:
    hdu 1823 Luck and Love 二维线段树
    UVA 12299 RMQ with Shifts 线段树
    HDU 4578 Transformation 线段树
    FZU 2105 Digits Count 线段树
    UVA 1513 Movie collection 树状数组
    UVA 1292 Strategic game 树形DP
    【ACM】hdu_zs2_1003_Problem C_201308031012
    qsort快速排序
    【ACM】nyoj_7_街区最短路径问题_201308051737
    【ACM】nyoj_540_奇怪的排序_201308050951
  • 原文地址:https://www.cnblogs.com/liqbk/p/15149426.html
Copyright © 2011-2022 走看看