zoukankan      html  css  js  c++  java
  • python基础之文件操作(基础六)

    第八章python基础之文件操作(基础六)

    python的文件的读写通过python的open()函数来打开一个文件。

    打开方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使⽤用的是r(只读)模式

    8.1 文件初识

    f = open("文件路径",mode="模式",encoding="编码")

    open()	打开文件
    open("文件的路径")
    open(mode= "对文件的操作方式")
    open(encoding="utf-8")
    编码:win==>gbk,Linux==>utf-8,mac==>utf-8
    f = pen()文件的句柄
    

    open() # 调用操作系统打开文件
    mode # 对文件的操作方式
    encoding # 文件的编码集 -- 存储编码要统一,根据⽂文件的实际保存编码进⾏行行获取数据

    8.1文件的读操作

    文件全部读取完成以后,在次读取就没有内容

    只读 r 模式:

    f = open("a",mode="r",encoding="gbk")
    content = f.read()    # 全部读取
    print(content)
    c1 = f.read(3)        # 字符读取
    print(f.readline(3))  # 读取一行内容中多个字符
    print(f.readlines())  # 一行一行读取,存储到列表中   
    是换行
    print(f.read())
    

    文件的路径与查找:

    F:a111.txt  		绝对路径 从磁盘的根处查找
    相对路径      		相对于当前文件进行查找的
    
    import os
    print(os.getcwd())  # 查看当前工作路径
    
    print(repr("F:a文件初识.txt"))
    print("F:a文件初识.txt")
    
    

    文件的迭代读取

    for i in f:  # 迭代读取
        print(i)
    

    8.2 文件的写操作

    文件写 w 模式:w清空写入,a 追加写在文本末尾添加

    没有文件创建文件内容,有文件内容清空内容在写入

    f = open("day8",mode="w",encoding="utf-8")  #打开文件
    f.write("123")							 #操作文件
    f.close()  								 # 关闭文件
    
    f = open("a",mode="r",encoding="gbk")
    print(f.read())
    f.close()  # 关闭文件后就不能继续读取了
    

    写入文件内容:f.write("写入的内容")

    f = open("a",mode="a",encoding="gbk")
    f.write("啊啊啊,好困啊")						#文件末尾添加
    

    8.3文件的非文本读写操作

    rb,wb,ab 不能指定编码

    f = open("1.jpg",mode="rb")		#打开图片格式文件
    rb ,wb,ab 不能指定编码
    print(f.read())  # read()  全部读取
    print(f.read(3)) # 字节
    

    通过requests模块爬取图片文件

    import requests
    ret = requests.get("http://www.521609.com/uploads/allimg/151124/1-1511241G251317.png")
    f = open("2.jpg",mode="wb")
    f.write(ret.content)
    f.close()
    

    8.4文件的r+,w+,a+模式操作

    r 读 r+ 读写
    w 写 w+ 写读
    a 写 a+ 写读

    错误示范
    f = open("day8",mode="r+",encoding="utf-8")
    f.write("你好啊")
    print(f.read())
    
    正确示范   -- 后期开发中使用频率比较低
    f = open("day8",mode="r+",encoding="utf-8")
    print(f.read())
    f.write("脑瓜疼啊脑瓜疼")
    

    w+ 写读

    f = open("day8",mode="w+",encoding="utf-8")
    f.write("你您你你")
    print(f.read())
    

    a+ 追加

    f = open("a",mode="a+",encoding="gbk")
    print(f.tell())  # 查看的是字节
    f.seek(0)
    print(f.read(1)) # 字符
    

    其他操作

    查看光标: tell() 返回值 返回的就是当前光标的位置

    移动光标::

      seek(0,0) 文件开始位置
      seek(0,1) 光标的当前位置
      seek(0,2) 文件末尾位置
      seek(3)   按照字节调节  使用utf-8是3 gbk是2
    

    8.5文件的修改

    with open("day8",mode="r+",encoding="utf-8")as f:
        content = f.read()
        content = content.replace("您","你")
        f.seek(0,0)
        f.write(content)
    

    文件的修改:

    with open("day8",mode="r",encoding="utf-8")as f,
    open("new_day8",mode="a",encoding="utf-8")as f1:
        for i in f:
            content = i.replace("你","我")
            f1.write(content)
    
    import os
    os.remove("day8")  # 原数据可以使用rename来做备份
    os.rename("new_day8","day8")
    

    有问题用for循环批量修改文件需要修改的内容:

    with open("day8",mode="r+",encoding="utf-8")as f:
        for i in f:
            content = i.replace("您","你")
            f.seek((0,0))
            f1.write(content)
    
    
    
  • 相关阅读:
    /etc/alternatives
    linux Link
    JVM程序计数器
    面向对象的内存分析
    SpringBoot项目简单实现给邮箱发送验证码
    注解式SQL Select语句判空
    SQL Update时参数判空:传入参数为空时不更新对应字段,不为空时才更新
    MySQL数据库误Update找回数据的方法
    用户-角色-权限系统概述
    将一个数组转换为List
  • 原文地址:https://www.cnblogs.com/yueling314/p/11041941.html
Copyright © 2011-2022 走看看