Python基础篇(9)---文件操作补充和初识函数

本章内容

     • 文件的光标移动

     • 文件的修改

     • 初识函数

文件光标的移动


 1.提前需知

复制代码
# 文件内指针的移动都是Bytes为单位的,除了t模式下的read(n),n以字符为单位
with open('a.txt', 'rt', encoding='utf-8') as f:
    data = f.read(3)  # 读取3个字符
    print(data)

with open('a.txt','rb') as f:
     data=f.read(3) # 读取3个Bytes
     print(data.decode()) 

'''
注意事项:
         1.read在文本模式下 括号内的数字表示的是读取指定的字符个数
         2.read在二进制模式下 括号内的数字表示的是读取指定的字节数
         3.unicode所有的字符都是用2bytes来起步表示
         4.utf8中文用3bytes来表示 英文用1bytes来表示  往后unicode可以不做研究  只研究utf8、gbk等编码即可

''' 
复制代码

2.控制光标的移动

1
2
3
4
5
6
7
8
seek方法可以控制光标的移动 在文本模式下移动的单位也是字节数
seek方法有3个模式  语法seek(offset,whence)   offset控制移动的位数,whence选择模式
模式1:0模式--默认
          seek(n,0)    # 从文件开头向后移动n个字节    支持文本模式和二进制模式
模式2:1模式
          seek(n,1)    # 从当前位置向后移动n个字节    只支持二进制模式
模式3:2模式
          seek(-n,2)    # 第一个值一般为负数,从文件的末尾向前移动n个字节     只支持二进制模式

 

文件的修改


 文件对应的是硬盘空间,我们不能直接对硬盘操作实现修改文件,而是将硬盘中的文件读到内存,然后在内存中完成修改最后在翻盖到硬盘中。

文件修改的方式一

# 实现思路:以占用电脑内存的方式,将文件读取到内存中修改再存回硬盘。
# 优点:在文件修改过程中同一份数据只有一份
# 缺点:会占用过多的内存
with open('a.txt','rt',encoding='utf-8') as f:
    data=f.read()
with open('a.txt','wt',encoding='utf-8') as f:
    f.write(data.replace('jason','tom'))

文件修改方式二

复制代码
# 实现思路:分别打开和新建一个文件,修改文件后写入到新的文件中,直接保存到硬盘,即占用硬盘的方式
# 优点:不会占用过多的内存空间
# 缺点:文件修改过程中同一份文件存了两份
import os
with open('a.txt','rt',encoding='utf-8') as read_f,\
        open('.a.txt.swap','wt',encoding='utf-8') as wrife_f:
    for line in read_f:
        wrife_f.write(line.replace('jason','kevin'))
os.remove('a.txt')  # 删除文件
os.rename('.a.txt.swap','a.txt')  # 重命名文件
复制代码

初识函数


函数就是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,简单的理解就是工具。

我们使用的使用的len()也是函数,不过是python已经封装好的函数,我们将这些已经封装好的函数称为内置函数。

当然我们想要的功能函数python不可能全部都有,这个时候就需要我们自己去写函数,我们自己写的函数就称为自定义函数。

函数的语法结构

复制代码
def 函数名(参数1,参数2,...):
    """函数的功能注释或者说明"""
    函数体
    return
1
2
3
4
5
6
7
def:定义函数的关键字;
函数名:类似于变量名,是对函数体代码的引用,函数的命名应该能够体现函数的功能;
括号:是定义函数时,在函数名后面必须加的,参数可有可无,根据需要写参数;
冒号:在括号后要加冒号,表示缩进函数体的代码;
函数的注释:主要用于解释函数的功能、使用方法等具有说明性的文字,增强函数的可读性;
函数体:由语句和表达式组成,是函数核心功能的编写区域;
return:定义函数的返回值,可有可无。
''' 1.定义函数的过程不会执行函数体代码 只会检测语法 语法错误定义的时候就会报错 2.调用函数需要使用函数名加括号 '''
复制代码

 

 

posted @   早安_1207  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
返回顶端
点击右上角即可分享
微信分享提示