zoukankan      html  css  js  c++  java
  • python之文件读写(1)

    1. 从文件读取数据

    关于对文件的操作,使用open(filename, mode),打开文件。与之对应的,close()用来关闭文件。对文件操作完毕切记要关闭。

    open函数参数:

    mode 参数有:

    模式描述
    t 文本模式 (默认)。
    x 写模式,新建一个文件,如果该文件已存在则会报错。
    b 二进制模式。
    + 打开一个文件进行更新(可读可写)。
    U 通用换行模式(不推荐)。
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
    w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

     

     

     

     

     

     

     

     

     

    其中重点要理解r,r+,w,w+,a,a+.

    博主理解是:

    r(read):可读

    w(write): 可写

    a(append):追加

    +:权限升级

    1.1 读取整个文件

     读取文件我们使用的函数是read()。read函数可以传递参数,下一小节会用到。

    1 file = open("test_data.txt", "r", encoding="UTF-8") # open的参数有兴趣的小伙伴可以自己查一下
    2 res = file.read()  
    3 print(res)
    4 file.close()

    1.2 读取指定字节的内容

     读取指定字节,首先我们要知道什么是字节:字节(Byte /bait/ n. [C])是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位,也表示一些计算机编程语言中的数据类型和语言字符。

    Ascll码:一个汉字=2个英文字母=2字节。

    如果我们要读出文件中前13个字节,只需要在read中传入参数read(13)。试一下

    1 file = open("test_data.txt", "r",)
    2 res = file.read(13)
    3 print(res)
    4 file.close()

    当在read中输入负数时,是读取全部内容。

    1 file = open("test_data.txt", "r",)
    2 res = file.read(-1)
    3 print(res)
    4 file.close()

    1.3 读取包含中文内容的文本

     utf-8下回车也占1字节,其他也是一字节。

    file = open("test_data.txt", "r",encoding="UTF-8")
    res = file.read(6)
    print(res)
    file.close()

    结果:

    1.4 按行读取内容

     1.4.1 读一行

    按行读取文件内容使用的是readline方法。实际操作一下哎。

    readline方法也可以传入参数。我们分别看一下不传参与传参的区别:

    不传参:

    传参:

    传入的参数其实是限制作用,可以限制读取该行的前几个字节。

    总结:这是按行读取的,读完第一行,会根据光标所在的位置,如果该行未读取完,再执行则继续读取该行。如果完整读取完一行,再执行则读取下一行。建议读者配合记事本模拟方便理解。

     1 #!/usr/bin/python3
     2 # -*- coding: utf-8 -*-
     3 # @Time     :2018/11/28 16:11
     4 # @Author   :Yosef
     5 # @Email    :wurz529@foxmail.com
     6 # @File:    :class26.py
     7 # @Software :PyCharm Community Edition
     8 file = open("test_data.txt", "r",encoding="UTF-8")
     9 res_1 = file.readline(3)
    10 res_2 = file.readline()
    11 res_3 = file.readline()
    12 res_4 = file.readline()
    13 print(res_1)
    14 print(res_2)
    15 print(res_3)
    16 print(res_4)
    17 file.close()

    结果:

    有一点需要提醒,这种读行也读取了换行,不想换行的话,可以使用strip(“ ”)来去掉。应该还记得这个函数吧,忘记的话自行百度或者看我字符串那边的博客。

     1 #!/usr/bin/python3
     2 # -*- coding: utf-8 -*-
     3 # @Time     :2018/11/28 16:11
     4 # @Author   :Yosef
     5 # @Email    :wurz529@foxmail.com
     6 # @File:    :class26.py
     7 # @Software :PyCharm Community Edition
     8 file = open("test_data.txt", "r",encoding="UTF-8")
     9 res_1 = file.readline(3)
    10 res_2 = file.readline().strip("
    ")
    11 res_3 = file.readline().strip("
    ")
    12 res_4 = file.readline().strip("
    ")
    13 print(res_1)
    14 print(res_2)
    15 print(res_3)
    16 print(res_4)
    17 file.close()

     1.4.2 读多行

    读多行用的是readlines方法。看一下下图:

    参数可以传入动态参数以及关键字动态参数。

    先不考虑传参的问题,直接运行结果如下:

    我们发现结果是一个列表,而且换行都用“ ”来表示了。

  • 相关阅读:
    [luoguU48834][count]
    [ZROJ110][假如战争今天爆发]
    [luogu4860][Roy&October之取石子II]
    [luogu4018][Roy&October之取石子]
    [luoguU48574][藏妹子之处]
    [20181025晚][模拟赛]
    [20181025上午][模拟赛]
    ElasticSearch业务逻辑案例
    ElasticSearch安装及使用
    面试必问:ACID/CAP
  • 原文地址:https://www.cnblogs.com/wlyhy/p/10030845.html
Copyright © 2011-2022 走看看