• python基础4--文件操作


    文件操作


    对文件操作流程

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过句柄对文件进行操作
    3. 关闭文件 

    1.open()打开文件

    1 #获取文件句柄
    2 f = open("yesterday","r",encoding="utf-8")
    3 #读取数据
    4 data = f.read()
    5 #打印读取的文件
    6 print(data)
    7 #关闭文件
    8 f.close()

    打开文件的模式有:

    • r,只读模式(默认)。
    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】      
    • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

    "+" 表示可以同时读写某个文件

    • r+,可读写文件。【可读;可写;可追加】
    • w+,写读
    • a+,同a

    "U"表示在读取时,可以将 自动转换成 (与 r 或 r+ 模式同使用)

    • rU
    • r+U

    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb
    • wb
    • ab

    2. with 语句打开文件

    使用with语句打开文件,不需要在最后使用f.close()来关闭文件,with执行完毕之后会自动关闭。

    1 with open("./name.txt",'r') as f:
    2     names = f.read()
    3 print(names)

    在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

    1 with open('log1') as obj1, open('log2') as obj2:
    2     pass

    3.read()

    文件内容

    Yesterday when I was young
    The taste of life was sweet
    As rain upon my tongue
    
    1 with open("flieread.txt","r",encoding="utf-8") as f:
    2     data1 = f.read()
    3     print(data1)
    4     data2 = f.read()
    5     print("------data2-----",data2)

    data2的部分为空,因为在文件中 ,维护一个类似文件指针的一个东西,这个文件指针类似于我们平时操作文件时的光标的东西,所以当第1次读文件时,文件指针已经指向最后一个位置,所以第2次再去读取的时候,是从最后一个位置开始读取的,所以读取的为空。

    4.python读取文件方式

    1 with open("yesterday.txt","r",encoding="utf-8") as f:
    2     while True:
    3         line = f.readline().strip()
    4         print(line)
    5         print(f.tell())
    6         if not line:
    7             f.seek(0)
    8             print(f.read(1))
    9             break
    f.tell() 显示读取文件到什么位置,也是下一次开始读文件的位置,每个字符占一位(空格、标点符号也算)

      f.seek() 设置读取文件光标的位置,f.seek(5)就是从第5个字符开始读取

     

    python读取文件从 0 的位置开始,Somehow中S的位置为 1

    第二行是从第72个字符开始读取的,即 不知为何中 的位置为 72

    f.seek(0)是文件读取完后,光标重新回到文首

    f.read(1) 读取第一个字符即  S

    5.readlines()

    readlines()和read()一样也是一次读取整个文件存放在内存中,所以只适合读取小文件,readlines()自动将文件内容分析成一个行的列表。该表可由python的for ... in ...处理。

     1 with open("flieread.txt","r",encoding="utf-8") as f:
     2     line = f.readlines()
     3     print(line)
     4     for i in line:
     5         print(i.strip())
     6 
     7 #输出
     8 ['Yesterday when I was young
    ', 'The taste of life was sweet
    ', 'As rain upon my tongue']
     9 Yesterday when I was young
    10 The taste of life was sweet
    11 As rain upon my tongue

    6.readline()

    每次只读取一行,这种占用内容比较小

    1 with open("flieread.txt","r",encoding="utf-8") as f:
    2     line = f.readline()
    3     print(line)
    4 
    5 #输出
    6 Yesterday when I was young

    7.逐行读取文件

    1 with open("fileread.txt","r",encoding="utf-8") as f:
    2     while True:
    3         line = f.readline()
    4         if not line:
    5             break
    6         else:
    7             print(line)

     

  • 相关阅读:
    快速排序
    fedora 配置
    while与do while
    switch选择结构
    if选择结构
    java有参
    java猜拳
    java类的无参方法
    java类与对象
    java数组
  • 原文地址:https://www.cnblogs.com/bigberg/p/6418112.html
Copyright © 2020-2023  润新知