python基础day-13:包和文件操作

本文详细介绍了Python中的包管理和文件操作。包是管理py文件的文件夹,包含init.py文件,可通过import导入并使用包内内容。文件操作涉及数据持久化,包括读写操作,如使用open()函数打开文件,使用read()和write()方法读写内容,并确保正确关闭文件。此外,还讲解了如何使用with语句自动关闭文件以及如何进行文件的读取和写入操作。
摘要由CSDN通过智能技术生成

一、包

1.1 什么是包

  • python程序中专门用来管理py文件的文件夹
  • 文件夹中有一个特殊文件:init.py
  • 导入包的时候‘init.py’文件一定会执行
  • 普通文件夹一般用来管理项目需要的非代码文件

1.2 使用包中的内容

1.2.1 直接导入包
  • import 包
    • 通过‘包.’ 来使用包中 ‘init.py’ 文件中的全局变量
1.2.2 连包带模块
  • import 包.模块
    • 通过‘包.模块.’ 来使用模块中的全局变量
  • import 包.模块 as 新名
    • 结合重命名导入模块
1.2.3 只导入包中模块
  • from 包 import 模块
    • 通过‘模块.’ 来使用模块中的全局变量
1.2.3 只导入变量
  • from 包.模块 import 变量1,变量2,变量3,…
    • 直接使用变量1、变量2、变量3…

 
 
 

二、文件操作,操作文件内容

2.1 数据持久化

  • 程序中使用和产生的数据默认保存在运行内存中
  • 程序结束后,运行内存中的数据会销毁
  • 想要不销毁数据,就将数据通过文件存储到硬盘中
  • 保存在硬盘中就是数据持久化
  • 硬盘操作的基本单位是文件
  • 编程常见文件类型:txt、json、plist、数据库
1. 需要持久化的数据通过一个文件保存

2. 需要这个被持久化的数据时,不直接给值,而是从文件中读这个数据

3. 如果被持久化的数据发生了改变,需要把最新的值再重新写入文件中

2.2 文件操作

2.2.1 基本步骤
  • 打开文件 -> 操作文件(读操作、写操作) -> 关闭文件
2.2.2 打开文件
  • open(file, mode=‘r’, *, encoding=None)
1. file - 需要打开的文件的路径
        绝对路径:文件在计算机中的全路径
        相对路径:用 . 表示当前目录,当前代码文件所在的目录;./可省略
                用 .. 表示当前目录的上层目录
                用 .......

2. mode - 文件打开方式,读还是写;操作的数据对象是字符串还是二进制
        - 以下方式一组必选一个:
        决定打开方式: r - 只读
                    w - 只写;打开会会清空原来内容
                    a - 只写;在原文内容上追加
        决定数据类型: t - 字符串(默认值)
                    b - 二进制

3. encoding - 文本文件编码方式,一般赋值为‘utf-8’
            - 读写时编码方式要一致
            - 只有文本文件在以‘t’的形式打开的时候,才能设置encoding

2.3 文件的读写

2.3.1 打开文件
  • 以‘r’读的方式打开不存在的文件,会报错
  • 以写的方式打开不存在的文件,会自动创建该文件
f = open('./sources/a', 'w', encoding='utf-8')
print(type(f))  # <class '_io.TextIOWrapper'>

f.write('窗前明月光\n')
2.3.2 关闭文件
  • 文件关闭以后不能再进行操作
f.close()
  • 自动关闭文件的写法
with open('./sources/a', 'a', encoding='utf-8') as f:
    f.write('疑是地上霜\n')
    f.write('举头望明月\n')
    f.write('低头思故乡\n')
2.3.3 操作文件
2.3.3.1 读
  • 文件对象.read()
  • 从文件读写位置开始,读到文件末尾
with open('./sources/a', 'r', encoding='utf-8') as f:
    result = f.read()
    print('第一次读:', result)  # 第一次读: 窗前明月光疑是地上霜
    result = f.read()
    print('第二次读:', result)  # 第二次读:没有

    f.seek(0)  # 将读写位置移动到文件开头
    result = f.read()
    print('第三次读:', result)  # 第三次读: 窗前明月光疑是地上霜
# 练习:使用readline将文本中的内容一行一行地读完
with open('./sources/c', 'r', encoding='utf-8') as f:
    while True:
        result = f.readline()
        print(result)
        if not result:
            break
2.3.3.2 写
  • 文件对象.write(数据)
# 练习:删除原文件第三行的内容
with open('./sources/a', encoding='utf-8') as f:
    result = f.readlines()

with open('./sources/a', 'w', encoding='utf-8') as f:
    if len(result) >= 3:
        del result[2]
    f.write(''.join(result))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值