• ⽂件操作


    文件操作

    路径

    #  绝对路径
    #  F: a111.txt  从磁盘根处查找
    #  相对路径
    #  相对于当前文件夹进行查找
    

    os (路径查找)

    import os
    print(os.getcwd())  # 查看当前工作路径
    

    os.name 备份及改名

    import os
    os.remove("原文件名字"(同一工作路径))    # 移除原文件
    os.rename("新文件名字","原文件名字") # 将新文件改成原文件的名字
    

    seek 光标

    # 查看光标位置 tell :  
    print(file_object.tell())  # 查询的是 字节单位的 光标 位置
    

    移动光标:

    • seek(0,0) 文件开始位置
    • seek(0,1) 光标的当前位置
    • seek(0,2) 文件末尾位置
    • seek(3) 按照字节调节 utf-8 3个/一个字 gbk 2个/一个字
    # 调整光标位置
    file_object.seek(3)  # 光标往后移动3个字节
    

    truncate 清空文件

    with open("wenjian.txt",mode = "r+", encoding = "utf-8") as f: # "r+"模式 ,光标在最后,必须将光标移至开头
        f.read()  # 读出原文件里的内容 光标停留在最后
        f.seek(0,0) #将光标移动到最前面 
        f.truncate() # 将文件读完之后 清空 
        f.write(内容)
        # 将新内容写入
        
    
    

    文件操作

    r (只读)模式

    • 只读不写 文件不存在 会报错
    # r (只读)模式 光标默认在0位
    # 打开文件
    file_object = open("路径/(同一工作路径不用加) + 文件名(全称)",mode = "r",encoding = "utf-8")
    # file_object # 文件句柄
    content = file_object.read()  #   读取全部内容
    
    content = file_object.read(3) #   从光标所在位置往后读取3个字符  → 在r 模式下 read(num) 读取字符
    
    content = file_object.readline()  #   读取一行内容
    
    content = file_object.readlines()  #   一行一行读取,出来是列表
    
    print(content)
    # 关闭文件
    file_object.close()  # 文件关闭后无法改动
    
    #  读取大文件
    for line in file_object: 
        line.strip()  #  去换行符 
      或者空白
        print(file_object) # 一行一行读 防止内存溢出
    

    r+ 可读可写

    # r+ (可读可写)模式  最好是先读后写 
    #打开文件
    file_object = open("路径/(同一工作路径不用加) + 文件名(全称)",mode = "r+",encoding = "utf-8")
    # 读内容
    print(file_object.read())
    # 写内容
    content = file_object.write("鬼厉")  # 写入类型str
    print(content)
    # 关闭文件
    file_object.close()
    
    
    

    w (写入)只写模式

    • 只写不能读, 先清空文件 ; 文件不存在则新建文件
    • 如果文件存在则新内容会部分或全部覆盖旧内容
    # w (只写)模式 光标从0位开始
    #打开文件
    file_object = open("路径/(同一工作路径不用加) + 文件名(全称)",mode = "w",encoding = "utf-8")
    # 写内容
    content = file_object.write("鬼厉")  # 写入类型str
    print(content)
    # 关闭文件
    file_object.close()
    
    
    

    a (追加写入)只写模式

    • 只追加不能读 ; 文件不存在则新建
    • 添加内容默认在原文件末尾
    # a (只写)模式 光标在末尾 默认在末尾添加
    # 打开文件
    file_object = open("路径/(同一工作路径不用加) + 文件名(全称)",mode = "a",encoding = "utf-8")
    # 写内容
    content = file_object.write("鬼厉")  # 写入类型str
    print(content)
    # 关闭文件
    file_object.close()
    
    
    

    读写非文本文件(rb . wb)

    # f = open("1.jpg",mode="rb")
    # rb ,wb,ab 不能指定编码
    # print(f.read())  # read()  全部读取
    # print(f.read(3)) # 字节  → 在rb里 read(num) 读取的是字节
    
    # 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()
    
    
    

    with open

    • 能同时操作多个文件 并且帮助自动关闭文件
    • 上下文管理*
    #  open 只能操作单一文件
    # f = open("day8",mode="r",encoding="utf-8")
    # f.read()
    
    
    # with open 能同时操作多个文件  并且帮助自动关闭文件
    # with open("day8",mode="r",encoding="utf-8") as(作为) f:  # 面向对象中上下文管理
    #     print(f.read())
    
    
    # with open("day8",mode="r",encoding="utf-8") as f,(如需换行用)
    #     open("a",mode="w",encoding="gbk") as f1:
    # 就等于with open("day8",mode="r",encoding="utf-8") as f, open("a",mode="w",encoding="gbk") as f1:
    #     print(f.read())
    #     f1.write("真饿!")
    
    
    
    

    修改文件

    # 修改文件:
     with open("原文件")as f,open("新文件")as f1:
         f.for循环的读取
         f1.for循环的写入
    
    
    

    三元运算

    # 三元运算又称三目运算,是对简单的条件语句的简写, 例
    if 条件成立:
        val = 1
        print(val)
    else:
        val = 2
    	print(val)
    # 转换为三元运算:
    val = 1 if 条件成立 else 2
    print(val)
    
    
    

    文件清单转 列表/字典(示例)

    # 演示一
    
    序号 部门 人数 平均年龄 备注
    1 python 30 26 单身狗
    2 Linux 26 30 没对象
    3 运营部 20 24 女生多
    .......
    通过代码,将其构建成这种数据类型:
    [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},
    ......]
    with open("al.txt",mode="w",encoding="utf-8") as file_object:
        file_object.write('''序号 部门 人数 平均年龄 备注
    1 python 30 26 单身狗
    2 Linux 26 30 没对象
    3 运营部 20 24 女生多''')
    lst_0 = []
    with open("al.txt",mode="r",encoding="utf-8") as file_object:
        lst = file_object.readline().strip().split()
        for i in file_object.readlines():
            dic = {}
            lst_1 = i.strip().split()
            for i_1 in range(len(lst)):
                dic.setdefault(lst[i_1],lst_1[i_1])
            lst_0.append(dic)
    print(lst_0)
    
    
    

    自由添加 示例

    # 演示二
    序号     部门      人数      平均年龄      备注
    1       python    30         26         单身狗
    2       Linux     26         30         没对象
    3       运营部     20         24         女生多
    .......
    通过代码,将其构建成这种数据类型:
    [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},
    ......]
    
    lst_1 = []
    with open("a1.txt",mode="w+",encoding="utf-8") as file_1:
        file_1.write('''序号     部门      人数      平均年龄      备注
    1       python    30         26         单身狗
    2       Linux     26         30         没对象
    3       运营部     20         24         女生多''')
        file_1.seek(0,0)
        lst = file_1.readline().strip().split()   #['序号', '部门', '人数', '平均年龄', '备注']
        for i in file_1:
            dic = {} # 字典要在循环文件时添加
            el = i.strip().split()
            for i_1 in range(len(el)):
                dic.setdefault(lst[i_1],el[i_1])
            lst_1.append(dic)
    print(lst_1)
    
    
    

    防止空行影响循环

    with open("文件名",mode="r",encoding="utf-8") as file_1:
        for i in file_1:
            if i == "":   # 防止空行影响程序运行
                continue  
    
    
    
  • 相关阅读:
    348. Design Tic-Tac-Toe
    347. Top K Frequent Elements
    346. Moving Average from Data Stream
    345. Reverse Vowels of a String
    343. Integer Break
    342. Power of Four
    341. Flatten Nested List Iterator
    340. Longest Substring with At Most K Distinct Characters
    339. Nested List Weight Sum
    Python(九) Python的高级语法与用法
  • 原文地址:https://www.cnblogs.com/fanxss/p/10995760.html
Copyright © 2020-2023  润新知