首页 > 编程语言 >Python文件的基础操作(2)

Python文件的基础操作(2)

时间:2023-09-05 16:56:59浏览次数:34  
标签:文件 函数 Python read print 操作 txt open

Python文件的基础操作(2)

  • 二进制模式下读写操作
  • 练习
  • 控制文件内指针(光标)的移动
  • 文件的修改
  • 函数的介绍

练习

# 小练习: 编写拷贝工具
	1. 让用户输入被拷贝的文件路径(源文件路径)
    2. 输入即将要拷贝的文件路径(目标文件路径)
    3. 以读的模式打开源文件,以写的模式打开目标文件
source_file_path = input('请输入待拷贝的文件路径:').strip()
dst_file_path = input('请输入目标文件的路径:').strip()
with open(r'%s' % source_file_path, 'rb') as read_f:
    with open(r'%s' % dst_file_path, 'wb') as write_f:
        for line in read_f:
            write_f.write(line) 

二进制模式下读写的操作

#大前提:文件内指针的移动都是Bytes为单位的,唯一例外的是t模式下的read(n),n以字符为单位
with open('a.txt',mode='rt',encoding='utf-8') as f:
     data=f.read(3) # 读取3个字符
    

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


# 之前文件内指针的移动都是由读/写操作而被动触发的,若想读取文件某一特定位置的数据,则则需要用f.seek方法主动控制文件内指针的移动,详细用法如下:
# f.seek(指针移动的字节数,模式控制): 
# 模式控制:
# 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
# 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的
# 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
# 强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用
t模式下:
    f.read() 如果不指定参数,默认情况下是一次性读取所有
    f.read(5) 如果指定了参数,返回的就是字符个数
    
b模式下:
    f.read(5) 如果指定了参数,返回的就是字节个数
    如果文件中有中文字符,切记书写的数字要是3的倍数,如果有中文也有英文字符,这个数字需要计算了
指针:就可以理解成光标的移动
# with open('a.txt', 'r', encoding='utf-8') as f:
#     print(f.read(5)) # 你helloworld
#     f.seek(3, 1)
#     print(f.read())
#     # print(f.read(5))
#     # print(f.read())

with open('a.txt', 'rb') as f:
    print(f.read(2))  # helloworld
    f.seek(-3, 2)
    print(f.read())
    # print(f.read(5))
    # print(f.read())

"""
f.seek()
    offset: int,
        代表的是移动的偏移量
        如果是正数,就往右边移
        如果是负数,就往左边以----------》左边要可移动
 """


# 小练习:实现动态查看最新一条的效果
# 小练习:实现动态查看最新一条日志的效果
import time  # 导入的一个时间模块

# linux里面的一条命令:tail -f access.log
with open('access.log', mode='rb') as f:
    f.seek(0, 2)
    while True:
        line = f.readline()
        if len(line) == 0:
            # 没有内容
            time.sleep(0.5) # 睡眠0.5秒
        else:
            print(line.decode('utf-8'), end='')

文件修改

mode='r+'    
mode='w+t'
mode='a+t'
# 可读可写
# 可读可写
# 可读可写
1. 硬盘中得数据是不允许直接修改的
2. 内存中得数据是可以直接修改的
a.txt
kevinkevin     山东    179    49    12344234523
李二蛋     河北    163    57    13913453521
王全蛋     山西    153    62    18651433422

'''方式一:'''
# 1. 读取文件内的所有数据
# 快捷键:shift+enter
with open('a.txt', 'r', encoding='utf-8') as f:
    data = f.read()

print(data)

# 2. 读取完字符之后,做字符替换
with open('a.txt', 'wt', encoding='utf-8') as f:
    f.write(data.replace('kevin', 'kevinSB'))
    
'''方式2:'''
import os

with open('a.txt',mode='rt',encoding='utf-8') as read_f, \
        open('.a.txt.swap',mode='wt',encoding='utf-8') as wrife_f:
    for line in read_f:
        wrife_f.write(line.replace('SB','kevin'))

os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')
    

函数的介绍

函数的语法

def 函数名(参数1,参数2,...):
	"""文档描述"""
	函数体
	return 值
"""
1. def 就是定义函数的关键字,它不能够省略,必须写
2. my_len():函数名,函数名的命名遵循变量的命名规范,他也是必填的,不能省略的,括号不能省略
3. a, b称为是函数的参数,是可选的,可有可无
    参数就是执行函数的一些前提条件
4. '''函数注释'''
    注释不参与函数的执行,只起到函数功能的提示作用,以及各个参数是什么意思
    # 可有可无的,但是,推荐每个函数都加上函数注释
5.  # 函数体
    才是函数的核心,它是函数所具备的核心功能,应该是必须有的,pass
    没有函数体的函数是没有意义的函数,一般情况都是要有函数体的
6. 返回值  return 函数的返回值
    # 返回值也是可选的,可以有返回值,也可以没有返回值,但是一般情况下都要有返回值
    # 一个函数只能有一个返回值...
"""

函数的定义与调用

1. 函数必须先定义后调用,没有定义函数是一定不能够调用的
2. 函数在定义阶段,只检测语法是否错误,不检测逻辑是否有问题
3. 逻辑上的错误只会在调用阶段检测
4. 函数一定是被调用之后才会执行函数内部的代码块,不调用函数一定不会执行函数的
	# 如何调用函数
    函数名() # 只要函数名加括号一定会执行函数体代码
    函数如果在定义阶段有参数,那么,在调用的时候,连参数一块写上
    
函数调用的内部原理:
1. 先在内存空间中申请一块空间地址来存储函数体代码
2. 把函数名和函数体所在的空间地址绑定在一起
3. 以后只需要通过函数名()来访问函数体代码即可

函数的类型

1. 内置函数
	# Python解释器中原本就存在的,可以直接拿来使用,无需定义,直接调用
    len print input 之前学习的数据类型的各个方法


2. 自定义函数
	# 程序员自己写的函数,就必须先定义后调用
    1. 无参函数:函数在定义阶段没有参数
    	def my_len():
            pass
        
        my_len() 
    2. 有参函数:在函数定义阶段有参数的存在
    	def my_len(a, b):
            pass
        
        my_len(1, 2)
    3. 空函数
    	def my_len():
            pass
        
       """作用就在于可以帮助我们梳理业务逻辑""" 

标签:文件,函数,Python,read,print,操作,txt,open
From: https://www.cnblogs.com/zhangfanshixiaobai/p/17680117.html

相关文章

  • 人大金仓 错误提示“致命错误:对不起,已经有太多的客户”解决方案 以及linux替换授权文
    项目需要,头一次接触人大金仓(友情提示,可以使用navicat连接哟)。使用连接工具报“对不起,已经有太多的客户”错误,java程序也是如此,找到数据库的kingbase.conf配置文件修改max_connections属性,重启。ok了。。。。。。。。。。。。。。。。。。。个锤子,这是理想情况。不理想情况:重......
  • 【Python爬虫笔记】爬虫代理IP与访问控制
    一、前言在进行网络爬虫的开发过程中,有许多限制因素阻碍着爬虫程序的正常运行,其中最主要的一点就是反爬虫机制。为了防止爬虫程序在短时间内大量地请求同一个网站,网站管理者会使用一些方式进行限制。这时候,代理IP就是解决方案之一。本文主要介绍如何在爬虫程序中使用代理IP以应对反......
  • Python学习 -- Math模块和Random模块
    math模块提供了许多数学函数,用于执行各种数学运算。以下是一些常用的math函数以及相应的示例代码:math.sqrt(x):计算平方根。importmathx=25square_root=math.sqrt(x)print(f"√{x}={square_root}")math.pow(x,y):计算x的y次方。importmathx=2y=3result......
  • 视频集中存储/直播点播平台EasyDSS点播文件分类功能新升级
    视频推拉流EasyDSS视频直播点播平台,集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。TSINGSEE青犀视频的EasyDSS平台具有点播文件分类展示方法,有两种实现方式可供用户自由选择,今......
  • Linux中修改文件权限的命令是什么?
    在Linux系统中,修改文件权限的命令主要有chmod、chgrp、chown。其中chmod是Linux中一个常用的文件权限管理命令,它可以用来更改文件或目录的读写执行权限,接下来我们通过这篇文章详细介绍一下chmod命令。在Linux系统中,修改文件权限的命令是chmod。通过该命令,用户可以更改文件......
  • Python目录管理(os库)
    在Python中,os库是处理文件和目录操作的常用库之一。它提供了许多函数,使得我们可以轻松地与操作系统进行交互,执行各种目录管理任务。本文将介绍os库中一些常用的目录管理函数,帮助你更好地理解和应用它们。os.path.join():这个函数用于将多个路径组合成一个完整的路径。它接收任意......
  • Python——10days
    二进制模式下读写操作控制文件内指针(光标)的移动文件的修改函数的简介函数的语法结构函数的返回值如何调用函数二进制模式下读写:t模式下:f.read()如果不指定参数,默认情况下是一次性读取所有f.read(5)如果指定了参数,返回的就是字符个数b模式下:f.read(5)如果指定了参......
  • 前端 文件流下载blob
    1.axios请求携带 responseType:'blob'exportfunctiongetCreateReport(id){returnrequest({url:`${apiPrefix}/bus/proposal/evaluation/${id}`,method:'Get',responseType:'blob'})}2.编写下载方法//blob文件下载expor......
  • PE 文件结构图
    最近在进行免杀的学习,在《黑客免杀攻防》这本书中找到了非常好的关于PE文件的描述,虽然书比较古老的,但是里面的内容是非常精细和优秀的。它的附页中有非常清晰的PE文件结构图,可是翻看比较麻烦,撕下来又可惜,于是我今天对着附页的图用excel重新画了一个。这些工作我平时做的比较少,所以......
  • Android平台GB28181历史视音频文件检索规范探讨及技术实现
    技术背景我们在做Android平台GB28181设备接入侧模块的时候,特别是执法记录仪或类似场景,系统除了对常规的录像有要求,还需要能和GB28181平台侧交互,比如实现设备侧视音频文件检索、下载或回放。本文假定记录仪或相关设备已经完成录像,主要来探讨下设备视音频文件检索相关。规范解读先回......