day8 -----文件操作

文件操作

  1. 文件操作函数

    open(“文件名(路径)”, mode="?", encoding = “字符集”)
    # mode 要记r w a r+ b(处理非文本)
    # 绝对路径: 从磁盘的根目录开始寻找, 或者从互联网上寻找一个路径(下载路径)
    # 相对路径:相对于当前程序所在的文件夹 (用的多)

    #正常模式
    r只读
    f = open ("…/aaaa", mode=“r”, encoding=“UTF-8”)
    s = f.read() #一次读取一行是readline()
    print (s)
    f.close()
    #循环:
    f = open("…/a", mode=“r”, encoding=“utf-8”)
    for line in f:
    print(line.strip()) #strip()函数是去空格
    f.close()

        w只写: (写前会清空原文件)
             f = open ("../aaaa", mode="w", encoding="UTF-8")
             f.write("shbdhsbh"\n)
             f.flush()
             f.close()
    
        a追加:
             f = open ("../aaaa", mode="a", encoding="UTF-8")
             f.write("shbdhsbh"\n)
             f.flush()
             f.close()
    

    #rb,wb.ab, b 是bytes, 处理的是非文本文件
    #将本地的图片移动到C盘下
    f = open("…/XX.jpg", mode=‘rb’) #mode里有b,则encoding就不能给了
    e = open(“c/XX.jpg”, mode=‘wb’)
    for line in f: #读取内容不知道,不一定是一行,但是保证内容的完整性
    e.write(line)
    f.close()
    e.flush()
    e.close()

    #r+ w+ a+模式:
    r+ 先读后写
    f = open ("…/aaaa", mode=“r+”, encoding=“UTF-8”)
    f.read() #读取全部,因为光标默认在最前面
    f.write(“sdsfdasf”) #从末尾开始写. ******不管光标在哪,都是从末尾写
    f.flush()
    f.close()

        w+ 先写后读 (***清空原来的)
            f = open ("../aaaa", mode="w+", encoding="UTF-8")
            f.write("sfsfsfsf") #写是清空原有,在写入,此时光标在末尾,如果直接读,则为读取末尾,就是空白
            f.seek(0)    #将光标移动到开始
            f.read()
            f.flush()
            f.close()
    
        a+ 先追加写后读 (与w+不同是不清空原文件)
            f = open ("../aaaa", mode="a+", encoding="UTF-8")
            f.write("ssssssss")
            f.seek(0)
            f.read()
            f.flush()
            f.close()
    

2.常用操作

 1.seek光标

        光标移动到开头
            f.seek(0) -----> f.seek(0,0) 在开头,偏移量是0

        光标移动到结尾
            f.seek(0,2)

            f.seek(偏离量,位置) 0是开头,1是当前,2是结尾
            例如
                f.seek(3,o) 从开头光标移动到第三个字节 *****read是读取字符,seek是字节 3字节=1字符
                f.seek(3,1) 从当前位置往后移动三个字节
                f.seek(0,2) 从末尾位置往后移动0个字节
                f.seek(-3,2) 从末尾位置向前移动三个字符

 2.tell 看光标位置在哪里


 3.truncate 切断 默认是删掉光标后面所有内容,给参数,就是从头到光标位置保留,剩下删除

3.文件修改

  1.引入os模块
  2.打开目标文件,r
  3.打开副本文件,w
  4.从r中读取内容进行修改,写入到副本中
  5.删除源文件
  6.重命名副本

  import os
  #with open("walsn.py", mode="r", encoding="utf-8") as f1----> f = open("walsn.py", mode="r", encoding="utf-8")
  #with open("walsn.py", mode="r", encoding="utf-8") as f1 会自动关闭文件

  with open("walsn.py", mode="r", encoding="utf-8") as f1, \
        open("walsn_副本", mode="w", encoding="utf-8") as f2:

        for i in f1:
              i = i.replace("boerte", "time")
              f2.write(i)
            
  os.remove("walsn.py")
  os.rename("walsn_副本", "walsn.py")
  1. 将表里面的每一行改成字典 (表第一行是每一特征的名称,间隔是",")
    list=[]
    with open(“表名(路径)”, mode=“r”, encoding=“UTF-8”) as f:
    first_line = f.readline().strip().split(",")
    for line in f:
    dic = {}
    ls = line.split().split(",")
    for i in range(len(first_line)):
    dic[first_line[i]]=ls[i]
    list.append(dic)
    print(list)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值