• python.day.08——file对象测试数据的读写操作


    一、import的用法介绍
     
    • 第一种:导入模块:import 包名.模块名
                             调用函数:包名.模块名。函数名(参数)
    • 第二种:导入模块:from  包名.模块名  import  函数名
                             调用函数:函数名(参数)
    • 如果引用的模块在lib下,可以直接使用
    注意事项:
    • 导入的时候,必须从最顶级开始一层一层的导入,不然会报错
    • 导入模块的时候,必须从包名开始导入,否则会报错

    我们以导入模块时报错为例:

    目录如下:从这两张图中可以很清楚的看到,是直接从class_day03这个包去读的,而忽略了tast_02与class_01的顶级目录是0735
    解决问题操作如下:
    • 在0735文件夹下面添加文件:__init__py
    • 将0735文件更名为day
    • 将模块导入语句修改为:(就是在class_day03的前面再加上一个包名day)
    from day.class_day03.class_01 import to_choose_drink
    to_choose_drink()

    编译运行:成功

    二、os操作文件和目录

    import os
    
    print("1", os.getcwd()) #获取当前文件的路径:具体到当前文件的文件夹
    print("2", os.path.realpath(__file__)) #__file__ 表示当前正在编辑的文件
    print("7", os.path.split(os.path.realpath(__file__))[0])  #结果和“1”的结果一致
    #os.mkdir("box.txt") #新建一个目录“box”
    
    current_now_dir =os.getcwd()
    第一步:”#new_dir =os.path.join(current_now_dir,"python7") #新建一个python7的目录
    第二步:#new_dir =os.path.join(current_now_dir,"python7","丑八怪") #在Python7下面新建一目录“丑八怪”
    第三步:#new_dir =os.path.join(current_now_dir,"python7/丑八怪", "醉了") #在最后一个目录下,前面的路径必须存在
    第四步:#new_dir =os.path.join(current_now_dir,"python8","啦啦") #直接新建一个目录“啦啦”(Python8目录不存在)-----这种情况会报错---必须一级一级的进行拼接
    os.mkdir(new_dir)
    
    print("3", os.listdir()) #获得当前路径下的目录列表,返回列表格式数据
    print("4", os.path.isfile(__file__)) #判断当前文件是否为文件,返回布尔值
    print("5", os.path.isdir(__file__)) #判断当前文件是否为目录,返回布尔值
    print("6", os.path.split(os.getcwd())) #返回的是一个元组,将最后一个目录和前面的目录分割开来
    
    print("8", os.path.exists("test.txt")) #判断是否“test.txt”存在
    
    控制台输出结果是:
    D:JetBrainsprogramvenvScriptspython.exe/JetBrains/program/untitled/class_day05/class_02.py
    1 D:JetBrainsprogramuntitledclass_day05
    2 D:JetBrainsprogramuntitledclass_day05class_02.py
    7 D:JetBrainsprogramuntitledclass_day05
    3 ['class_02.py', 'python7', '__init__.py']
    4 True
    5 False
    6 ('D:\JetBrains\program\untitled', 'class_day05')
    8 False
    
    Process finished with exit code 0
    三、file 文件 操作文件
    • open(file,mode ='r', bu) 内置函数,可以打开文件
    • open之后一定要close
    • 上下文管理器:with open  as
    # file = open("test.txt", 'r') #内置函数,可以打开一个文件
    # 绝对路径 相对路径
    # 同级目录下的为,相对路径
    # 据对路径,如果不在同一级目录下,
    
    # file = open("D:JetBrainsprogram\untitledclass_day04\test_new", 'r')
    
    # read 只读 write只写 append追加
    # 非二进制文件 r r+ w w+ a a+
    # 二进制文件 rb rb+ wb wb+ ab ab+
    """
    file = open("test.txt", 'r+', encoding='utf-8')
    # r只读的方式打开
    # r+读写的方式打开,写的内容会在文件后面
    
    a1 = file.read(5)
    a2 = file.read(4) # 光标会随着改动
    file.write("华华")
    print(a1, a2)
    """
    file = open("test_1.txt", 'w+', encoding='utf-8')
    # w只写,如果不存在这个file的话那么就会先新建,然后更具你的要求写入
    # w只写,如果存在这个file的话,那么就会直接覆盖,重写
    # w+ 读写,无论是否存在这个file,写的内容会在文件后面
    
    a1 = file.write("护花使者")
    print(file.tell()) # 获取当前光标的位置
    file.seek(0, 0) # 移动到头部
    # 移动光标,seek(offset,[.from]) offset移动的偏移量
    # 0:参考位置为文件开头
    # 1:参考位置为当前光标所在位置
    # 0:参考位置为文件结尾
    # offset :正往结束为止移动,负往文件头开始计算相对位置,从文件尾计算时就会引起异常
    
    a2 = file.read(4)
    print(a2)
    
    file = open("test_1.txt", 'a', encoding='utf-8')
    file.write("sellme")
    file.seek(0, 0)
    print(file.read())
    
    # a追加(只能写入),在后面追加,不可以.read
    # a+ 追加(读写),如果不存在这个file的话那么就会先新建,然后根据你的要求写入,可以.read
    # a+ 追加(读写),如果存在,则在后面直接写入,可以.read()
    • 上下文管理器
    with open("test_1.txt", "r") as file:
        print(file.read())
  • 相关阅读:
    u-boot 内核 启动参数
    模块移除 命令rmmod 的实现
    led 的 platform驱动实现
    kconfig语法
    通过编程语言操作数据库
    linux 下 postgres 的使用总结
    maven 项目遇到的问题(不断更新中)
    从svn中check out maven项目 所遇到的一系列问题:
    java多线程学习
    内连接,外连接,交叉连接--数据库查询语句学习
  • 原文地址:https://www.cnblogs.com/Rosay9204781/p/9173648.html
Copyright © 2020-2023  润新知