Python 文件操作入门

文件介绍:

概述:
     无论是 windows, Linux, Mac系统, 都是采用 文件 来管理数据的, 它们都是 文件管理系统.
     之所以用文件来管理数据, 原因是因为: 内存中的数据是临时存储的, 电脑管理了, 数据就丢失了文件: 可以实现永久存储数据.
文件的类型:
        文本文档, 图片类型, 视频类型, 音频类型......
文件的操作步骤:
        1. 打开文件.
        2. 读写操作.
        3. 关闭文件.

        打开文件涉及到的API(Application Programming Interface, 应用程序编程接口)
        文件对象名 = open('文件路径', '打开模式', 码表)        # 参3为可选项, 针对于 中文有效.
    读取文件信息:
        read(num)       一次读取num个字节的数据, 不写就一次性读取所有的数据.
        readline()      一次读取一行.
        readlines()     一次性读取读完所有行, 且会把每行数据封装到 1个列表中.
    关闭文件:
        文件对象名.close()

细节:
    1. Python中, 路径的写法, 要么用 \\,  要么用 /, 要么用 r'一个\就行', 即: r'\' 会取消 \的转移含义, 当做1个普通字符来用.
    2. 相对路径默认是相对于 当前项目的路径来写的, 即: 你直接写 1.txt, 想到于是  /当前项目路径/1.txt

1. 打开文件(file)

# 场景1: 绝对路径.
f = open(r'D:\workspace\pythonProject\data\a.txt', 'r')           # r'' 取消 \的 转义函数.
f = open('D:\\workspace\\pythonProject\\data\\a.txt', 'r')      # \\ 代表 1个 \
f = open('D:/workspace/pythonProject/data/a.txt', 'r')              # 或者可以写成 /


# 场景2: 相对路径写法.  默认是相对于当前项目的路径来讲的
f = open('./data/a.txt', 'r')           # ./ 代表当前目录
print(f'文件对象名: {f}')

2. 读写操作

read(num)       # 一次读取num个字节的数据, 不写就一次性读取所有的数据.
print(f.read())      # 一次性读取所有的数据.
print(f.read(3))     # 一次读取3个字节, 包括: \n 也占1个字节
print(f.read(5))     # 一次读取5个字节, 包括: \n 也占1个字节

readline()      # 一次读取一行.
print(f.readline())     # 'abc\n'
print(f.readline())     # 'defg\n'
print(f.readline())     # 'xyz'
print(f.readline())     # 空

readlines()     # 一次性读取读完所有行, 且会把每行数据封装到 1个列表中.
print(f.readlines())    # ['abc\n', 'defg\n', 'xyz']
write(数据)       # 往文件中写数据.
writelines()     # 一次写多行.

 

3. 关闭文件

f.close()

演示:拷贝 a.txt文件数据 到 b.txt 

# 1. 封装数据源文件, 用于: 读取它的数据.
src_f = open('./data/a.txt', 'r', encoding='utf-8')
# src_f = open('./data/a.txt', 'rb')      # 字节形式 读写的时候, 不能指定码表.

# 2. 封装目的地文件, 用于: 往其中写数据.
dest_f = open('./data/b.txt', 'w', encoding='utf-8')
# dest_f = open('./data/b.txt', 'wb')

# 方式1: 一次性读取所有, 并一次性写入所有.
data = src_f.read()
dest_f.write(data)

# 方式2: 一次性读取所有(行), 并一次性写入所有行.
data = src_f.readlines()    # [行, 行, 行...]
dest_f.writelines(data)

# 方式3: 循环读取, 读一行, 写一行.  或者 一次性读写指定的字节数, 一般是: 1024的整数倍.
while True:
    # 一次性读取 8192个字节, 8 * 1024 = 8192个字节 = 8KB
    data = src_f.read(8192)
    # 核心细节: 如果读不到数据了, 即读取到文件末尾了, 结束读取.
    # if len(data) == 0:        # 可以判断长度
    if data == '':              # 也可以判断是否为空
        break
    # 把读取到的数据, 写到目的地文件.
    dest_f.write(data)

# 3. 关闭文件.
src_f.close()
dest_f.close()

4. with-open语法

with-open语句:
    它主要是针对于 文件操作的, 即: 你再也不用手动 close()释放资源了, 该语句会在 语句体执行完毕后, 自动释放资源.

格式:
   with open('路径', '模式', '码表') as 别名,  open('路径', '模式', '码表') as 别名:
        语句体

特点:
    语句体执行结束后, with后边定义的变量, 会自动被释放.

with open('./data/a.txt', 'rb') as src_f, open('./data/b.txt', 'wb') as dest_f:
    # 2. 具体的 拷贝动作.
    # 2.1 循环拷贝.
    while True:
        # 2.2 一次读取8192个字节.
        data = src_f.read(8192)
        # 2.3 读完了, 就不读了.
        if len(data) <= 0:
        # if data == '':
            break
        # 2.4 走到这里, 说明读到了, 把读取到的数据写出到目的地文件.
        dest_f.write(data)

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值