python笔记更新(文件操作、装饰器、迭代器、生成器)

这篇博客详细介绍了Python中的文件操作,包括文件的打开、关闭、读取、拷贝以及CSV文件的处理。同时,深入探讨了异常处理,如finally和with关键字的应用。此外,还涵盖了装饰器的高级用法和迭代器、生成器的概念及应用场景。
摘要由CSDN通过智能技术生成

文件

文件的打开和关闭

# Python里使用 open 内置函数打开并操作一个文件
# open 参数介绍
# file:用来指定打开的文件(不是文件的名字,而是文件的路径)
# mode:打开文件时的模式,默认是 r 表示只读
# encoding:打开文件时的编码方式

# open 函数会有一个返回值,打开的文件对象
# xxx.txt 写入时,使用的 utf8 编码格式
# 在windows操作系统里,默认使用 gbk 编码格式打开文件
# 解决方案:写入和读取使用相同的编码格式
file = open('xxx.txt', encoding='utf8')
# print(type(file))  # <class '_io.TextIOWrapper'>
print(file.read())
file.close()  # 操作完成文件以后,关闭文件

路径的介绍

# open 参数介绍
# file:用来指定打开的文件(不是文件的名字,而是文件的路径)
# mode:打开文件时的模式,默认是 r 表示只读
# encoding:打开文件时的编码方式
import os

# print(os.sep)  # windows系统里,文件夹之间使用 \ 分隔
# 在Python字符串里, \ 表示转义字符
# 在非windows系统里,文件夹之间使用 / 分隔

# 路径分为两种:
# 1.绝对路径:从电脑盘符开始的路径
# 路径书写的三种方式:1. \\  2. r'\'  3. '/' (推荐)
# file = open('D:\\Pycharm文件\\代码练习\\xxx.txt')
# file = open(r'D:\Pycharm文件\代码练习\xxx.txt', encoding='utf8')
# file = open('D:/Pycharm文件/代码练习/xxx.txt', encoding='utf8')

# 2.相对路径:当前文件所在的文件夹开始的路径
# ../ 表示返回到上一级文件夹
# ./ 可以省略不写,表示当前文件夹
# / 不能随便用
file = open('./xxx.txt', encoding='utf8')
# file = open('./demo/sss.txt', encoding='utf8')
# file = open('./../ppp.txt', encoding='utf8')
print(file.read())
file.close()

文件的打开方式

# mode 指的是文件的打开方式
# r:只读模式,默认,打开文件以后,只能读取,不能写入。如果文件不存在,会报错
# w:写入模式,打开文件以后,只能写入,不能读取。如果文件存在,会覆盖文件;如果文件不存在,会创建文件
# b:以二进制的形式打开文件,可以用来操作非文本文件
# t:文本形式打开
# mode默认使用的 rt
# rb:以二进制读取  wb:以二进制写入

# a:追加模式,会在最后追加内容。如果文件不存在,会创建文件;如果文件存在,会追加
# r+:可读写。如果文件不存在,会报错
# w+:可读写。如果文件存在,会覆盖文件;如果文件不存在,会创建文件

# file = open('xxx.txt', 'r')
# print(file.read())
# file.write('hello')  # 不能执行写入操作,会报错
# file = open('xs.txt', 'r')  # 文件不存在时,会报错

# file = open('xxx.txt', 'w')
# file.read()  # 不能够执行读取,会报错
# file.write('hello')  # 可以执行写入的操作
# file = open('yyy.txt', 'w')  # 创建了文件

# file = open('xxx.txt', 'rb')
# print(file.read())  # 读取的结果是二进制b'\xc4\xe3\xba\xc3'
# file = open('xxx.txt', 'wb')
# file.write('大家好才是真的好')  # 报错,只能写入二进制
# file.write('大家好才是真的好'.encode('utf8'))

file = open('yyy.txt', 'w+',)
file.write('哈哈哈')
file.seek(0, 0)  # 写入之后,文件指针到最后,需要调用 seek 将文件指针重置到开头
print(file.read())
file.close()

文件的读取方式

# file = open('xxx.txt')  # 报错,默认是以rt打开,如果文件不存在,会报错
# file = open('sss.txt', 'rt', encoding='utf8')
# print(file.read())  # 将所有的数据都读取出来
# print(file.readline())  # 只读取一行数据
# while True:
#     content = file.readline()
#     print(content)
#     if content == '':
#         break
# x = file.readlines()  # 读取所有行的数据,保存到一个列表里
# print(x)
# x = file.read(10)  # 指的是读取的长度
# print(x)
file = open('../02-视频/02-作业讲解2.mp4', 'rb')
# print(file.read())
while True:
    content = file.read(1024)
    if not content:
        break
    print(content)
file.close()

文件拷贝功能

import os

file_name = input('请输入一个文件路径:')
if os.path.isfile(file_name):
    # 打开旧文件
    old_file = open(file_name, encoding='utf8')

    # names = file_name.rpartition('.')  # ('sss', '.', 'txt')
    # new_file_name = names[0] + '.bak.' + names[2]

    names = os.path.splitext(file_name)  # ('sss', 'txt')
    new_file_name = names[0] + '.bak' + names[1]

    new_file = open(new_file_name, 'w', encoding='utf8')  # 打开一个新文件用于写入
    # 把旧文件的数据读取出来写入到新的文件
    new_file.write(old_file.read())
    new_file.close()
    old_file.close()
else:
    print('您输入的文件不存在')

文件拷贝优化

import os

file_name = input('请输入一个文件路径:')
if os.path.isfile(file_name):
    old_file = open(file_name, 'rb')  # 以二进制的形式读取文件
    names = os.path.splitext(file_name)
    new_file_name = names[0] + '.bak' + names[1]
    new_file = open(new_file_name, 'wb')  # 以二进制的形式写入文件
    while True:
        content = old_file.read(1024)  # 读取出来的内容是二进制
        new_file.write(content)
        if not content:
            break
    new_file.close()
    old_file.close()
else:
    print('您输入的文件不存在')

CSV文件的读取

CSV文件:Comma-Separated Values,中文叫逗号分隔值或者字符分隔值,其文件以纯文本的形式存储表格数据。可以把它理解为一个表格,只不过这个表格是以纯文本的形式显示的,单元格与单元格之间,默认使用逗号进行分隔;每行数据之间,使用换行进行分隔。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值