zoukankan      html  css  js  c++  java
  • 文件操作函数

    1文件操作函数   open

    1. 绝对路径,从磁盘的根目录寻找 或者 从互联网上寻找一个路径
    2. 相对路径(用的多). 相对于当前程序所在的文件夹 ../上一层文件夹
    r 读
    f=open("小护士我爱你.txt",mode='r',encoding="utf-8")
    s=f.read()
    print(s)
    f.close()

    通过在相同文件下创建的一个文本形式的内容,利用文本操作open进行查找

    open"文件名",mode"模式"encoding'字符集'(utf-8)

    f.close #没有这段话,你在下面这个程序删除这个会报错

    f=open("小护士我爱你",mode='r',encoding="utf-8")
    for line in f:
        print(line.strip())
    f.close()

    #如果文件太大会严重影响运行内存,所以提到for 

    for line in f 是一个可迭代的对象  print(line.strip()) # 一行一行的处理数据

    2.w  写  #带w 的 ,只要你操作完了,就会清空源文件  

    如果文件不存在,就会新建一个新文件

    1 f=open("一次",mode="w",encoding="utf-8")
    2 f.write("我爱你
    ")
    3 f.write("一次就好")
    4 f.flush()
    5 f.close()

    # 自己手动换行

    f.flush  刷新



    3.a 追加模式
    1 f=open("一次",mode="a",encoding="utf-8")
    2 f.write("我爱你
    ")
    3 f.write("一次就好")
    4 f.flush()
    5 f.close()

    在原有基础上进追加 可重复

    4.b模式   非文本文件

    rb,wb,ab, 都是bytes  如果处理读取的是非文本文件,mode 有b ,encoding 不写

    1 f = open("c:/pdd.jpg", mode="rb") # 这里不能写encoding
    2 e = open("e:/pdd.jpg", mode="wb")
    3 for line in f: # 从c盘读取 line你是不知道读取了多少数据的
    4     e.write(line)   # 写入到e盘
    5 f.close()
    6 e.flush()
    7 e.close()

    5. 带加号的

    r+ 

    读写模式  先读后写
    1 f=open("一次",mode="r+",encoding='utf-8')
    2 s=f.read(3)
    3 print(s)
    4 f.write("怒要了
    ")
    5 f.write("怒吃了")
    6 print(f)
    7 f.flush()
    8 f.close()

    不论你读了多少内容,光标在哪里,写入的时候都是在结尾写入,除非上来就写入,这是写入实在开头

    w+

    写读模式,先写后读,

    1 很少用. 因为会清空文件中的内容
    2 f = open("阿西吧", mode="w+", encoding="utf-8")
    3 f.write("张云雷也要退出德云社") # 写完之后光标在最后. 读取是没有内容的
    4 f.seek(0) # 移动光标, 移动到开头
    5 s = f.read()
    6 print("读取的内容是",s)
    7 f.flush()
    8 f.close()

    a+ 模式 

    1 f=open("一次",mode="a+",encoding="utf-8")
    2 f.write("这个是最后一次")
    3 f.seek(0)
    4 s=f.read()
    5 print(s)
    6 f.flush()
    7 f.close()

    s=f.seek (0)  #这个是将光标移到0位置

    光标 

    f.seek(3)  #3byte=>中文   都是根据光标位置查找到 f.seek(0) 把光标移动到0  seek(0,2) 末尾 seek(1)当前位置  seek(偏移量,位置)

     1 f=open("一次",mode="r",encoding="utf-8")
    2 f.seek(6)
    3 for line in f:
    4     print(line.strip())
    5 
    6 f.close()

    正常输出的是我爱你通过移动光标到第二个汉字

    print  f.tell()    #输出光标位置 

    特殊:

    truncate() #从文件开头截断到光标位置

    truncate(12) 这个12也是type 如果有参数,从头街道参数位置

    1 f=open("一次",mode="w",encoding="utf-8")
    2 f.write("我是小狗网袜尴尬")
    3 print(f.tell())
    4 f.truncate(21)
    5 f.close()

    在写入中 通过截取到第21个字节到第7个字而写入的

       

    #####

    修改文件

    1 import  os
    2 with open("一次",mode="r",encoding="utf-8") as f1 ,
    3     open("一次_",mode="w",encoding="utf-8") as f2:
    4     for line in f1:
    5         line=line.replace("小狗","张庆")
    6         f2.write(line)
    7 
    8 os.remove("一次")
    9 os.rename("一次_","一次")

    不会通过源文件进行写入,因为在w 的时候全部文件都被清空 只能用副本代替

     


  • 相关阅读:
    方法集锦3_字符串_python
    171. 乱序字符串
    149. 买卖股票的最佳时机(回顾)
    150. 买卖股票的最佳时机 II
    平方根的计算
    平方根的计算
    对话Roadstar投资人:一家自动驾驶公司之死(三) ...
    对话Roadstar投资人:一家自动驾驶公司之死(三) ...
    Axure遮罩 or 灯箱
    Axure遮罩 or 灯箱
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/9432034.html
Copyright © 2011-2022 走看看