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

    python的文件操作

    1. 文件操作的函数
      open(文件名(路径), mode="?", encoding="字符集")
    2. 模式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b

     文件路径:

    1. 绝对路径,从磁盘的根目录寻找 或者 从互联网上寻找一个路径

    2. 相对路径(用的多). 相对于当前程序所在的文件夹 ../上一层文件夹
    r 读
    f = open("哈哈哈哈哈", mode="r", encoding="UTF-8")
    s = f.read()
    print(s)
    f.close() # 如果没有这句话, 你在下面的程序中如果删除这个文件. 就会报错
    
    f = open("e:/abc/里皮.txt", mode="r", encoding="gbk")
    s = f.read()
    print(s)
    f.close()
    
    f = open("呵呵呵", mode="r", encoding="utf-8")
    while 1:
        s = f.readline().strip() # 一次读一行
        if s!= "":
            print("内容是",s)
    for line in f: # 文件是一个可迭代对象 print(line.strip()) # 一行一行的处理数据 lst = f.readlines() print(lst) f.close()
    # w 写
    # 带w的. 只要你操作了. 就会清空源文件
    # 如果文件不存在. 会自动创建文件
    f = open('沁园春.雪.txt', mode='w', encoding='utf-8')
    f.write('数风流人物
    ')   # 换行
    f.write('还看今朝')
    f.flush()   # 刷新
    f.close()   #养成好习惯关掉文件

    a 模式     追加

    f = open('沁园春.雪.txt', mode='a', encoding='utf-8')
    f.write('数风流人物
    ')  # 写的时候. 换行需要手动控制   
    
    f.write('还看今朝')
    f.flush()
    f.close()

    rb, wb, ab; bytes如果处理的是非文本文件, # mode里如果有b. encoding就不能给了
    f = open("c:/pdd.jpg", mode="rb") # 这里不能写encoding
    e = open("e:/pdd.jpg", mode="wb")
    for line in f: # 从c盘读取 line你是不知道读取了多少数据的
        e.write(line)   # 写入到e盘
    f.close()
    e.flush()
    e.close()
    不论你读取了多少内容.光标在哪儿,写入的时候都是在结尾写入, 除非上来就写入, 这时写入是在开头
    最好用的读写同时存在的模式
    r+ 读写模式. 先读后写
    w+ 写读模式. 先写后读(很少用,因为会清空文件中的内容)
    f = open('沁园春.雪.txt', mode='r+', encoding='utf-8')
    f.read(3)  # 读取三个字符
    print(f)
    f.write('还看今朝')   # 在末尾写
    f.flush()
    f.close()

        a+  

    
    
    f = open("阿西吧", mode="a+", encoding="utf-8")
    f.write("我要加入德云社")
    f.seek(0)   #  将光标移动到开头
    s = f.read()
    print(s)
    f.flush()
    f.close()
    
    


    3. 常用的操作
     1. 光标(seek)*
         seek(0) 开头
      seek(0,2) 结尾
     2. tell() 光标的位置
     3. truncate 截断文件

    # f = open("阿西吧", mode="r", encoding="utf-8")
    # for line in f:
    #     print(line.strip())
    #
    # f.seek(0) # 移动到开头
    #
    # for line in f:
    #     print(line.strip())
    #
    # f.close()
    
    # f = open("阿西吧", mode="r", encoding="utf-8")
    # f.seek(3) # 3byte => 1中文
    # s = f.read(1) # 读取一个字符
    # print(f.tell()) # 看光标在哪儿
    # f.close()
    
    # seek(偏移量, 位置)
    # seek(0) # 开头
    # seek(0,2) # 在末尾的偏移量是0 末尾
    
    f = open("啊同类个同同同", mode="w", encoding="utf-8")
    f.write("哇哈哈哈哈压缩盖伦")
    f.seek(9)
    print(f.tell())
    # 从文件开头截断到光标位置
    # 如果给参数. 从头截断到参数位置
    f.truncate(12)
    f.close()

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

    import os

    f1 = open("盖伦昨天干嘛去了", mode="r", encoding="utf-8") # 打开目标文件
    with open("盖伦昨天又干嘛去了", mode="r", encoding="utf-8") as f1, 
        open("盖伦昨天又干嘛去了_副本", mode="w", encoding="utf-8") as f2:
    
        for line in f1:
            line = line.replace("盖伦", "sb")
            f2.write(line)
    
    
    os.remove("盖伦昨天又干嘛去了")   # 删除文件
    os.rename("盖伦昨天又干嘛去了_副本","盖伦昨天又干嘛去了")  #  副本重命名

    文件操作示例:

    with open("2017-08-06.log", mode="r", encoding="utf-8") as f:
        first = f.readline().strip().split(",")
        for line in f:
            dic = {} # 每一行一个字典
            ls = line.strip().split(",")
            for i in range(len(first)):
                dic[first[i]] = ls[i]
    
            lst.append(dic)
    
    print(lst)
  • 相关阅读:
    MS SQL发生死锁以及tempdb的优化资源总结
    MS SQL SERVER 簡易取得資料表實體檔案大小
    jquery选择器(转载)
    [資源]RAID是什么意思?RAID的应用
    WIN2003下安裝PHP+MYSQL資源
    MS SQL 錯誤: 15457,重要性: 0,狀態: 1
    [轉]如何修改bootini文件的/pae/awe/3gb参数
    [資源]PHP防止SQL注入
    [收藏]CSS,JS控制Table的行顏色,以及邊框
    檢查php文件中是否含有bom的php文件
  • 原文地址:https://www.cnblogs.com/zwq-/p/9431211.html
Copyright © 2011-2022 走看看