首页 > 编程语言 >python文件操作

python文件操作

时间:2024-10-18 09:18:08浏览次数:8  
标签:文件 01 读取 python 2022 close 操作 line

1.文件的编码

思考:计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?

答案:使用编码技术(密码本)将内容翻译成0和1存入。

计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中,同时也需要编码,将计算机保存的0和1,反向翻译回可以识别的内容

不同的编码,将内容翻译成二进制也是不同的。

编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑

当我们记录文件时使用的什么编码,打开也同样使用什么编码去打开

看到的右下角的就是我的文件所使用的编码,大家也可以自行打开window系统中的记事本看看

随着时代变迁,许多编码被淘汰掉。你可以认为UTF—8将是一个通用编码,基本上现在99%都是使用它,还有GBK是在最早以前我们中文体系里面经常使用,Big5是繁体字用的比较多

2.文件的读取

test.py是我前几节课讲过的一个代码,用来给大家做示范

encoding并不是位于第三位,所以对于encoding要使用关键字传参,而不是位置传参

<class '_io.TextIOWrapper'>表示的就是对文本文件进行io操作功能的一个类,text就是表示文本

刚刚好读取了10个字节

注意当你使用了一次read之后,文件会记录你读取到哪里,下次会从上一次读到的地方继续读取,就是在上一个read的结尾处读取

注意:只要你打开文件读取一部分后,后面不管调用什么方法,它都会续接上一次读取文件的方法

readlines和read是不同的方法,但是我们都来自同一个文件对象,所以他也会续接上一个read所读取的结尾去接着去读

readlines读取到的\n其实就是每一行的换行符

read:读取指定字节或读取全部内容

readlines:读取全部行,封装到列表里面

每读取一次就读取一行,第二次读取就意味着读取到第二行

被占用时,无法对文件执行修改、重命名等操作

time.sleep(50000)这个代码的意思是让文件睡眠50000秒

但是:

f,close()

time.sleep(50000)

这样就代表你先关闭了文件,然后在让他睡眠,就可以正常进行修改、重命名等操作

import time
with  open("D:/test.py","r",encoding="UTF-8") as f:
    for line in f:
        print(f"每一行数据是:{line}")
time.sleep(3333333)

这个代码会自动执行close语句

文件对象有如下读取方法:

·read()

·readline()

`readlines()

`for line in 文件对象

读取完文件不要忘记close哦

小练习

思路

给大家分享了两种方法,仅供参考

f = open("D:/word.txt","r",encoding="UTF-8")
count = 0 #使用count变量来累计itheima出现的次数
for line in f:
    line = line.strip() #去除开头和结尾的空格以及换行符
    words = line.split(" ")
    for word in words:
        if word == "itheima":
            count += 1 #如果单词是itheima,进行数量的累加加1
print(f"itheima出现的次数是:{count}")
f.close()

3.文件的写入

基本步骤:打开->读写->关闭

使用open打开文件时,如果文件不存在,w模式会自动创建一个文件

直接使用close也可以,close方法,内置了flush的功能,同样也能写入文件

当你使用w模式,open存在的文件,文件存在它会把内容清空,然后写我们想要的东西,文件不存在她会把文件创建出来

4.文件的追加

使用”\n“换行输入

a模式,文件不存在,会创建新文件

a模式,文件存在,会在原有内容后面继续写入

5.文件操作综合案例

name,date,money,type,remarks
周杰轮,2022-01-0,1100000,消费,正式
周杰轮,2022-01-02,300000,收入,正式
周杰轮,2022-01-03,100000,消费,测试
林俊节,2022-01-01,300000,收入,正式
林俊节,2022-01-02,100000,消费,测试
林俊节,2022-01-03,100000,消费,正式
林俊节,2022-01-04,100000,消费,测试
林俊节,2022-01-05,500000,收入,正式
张学油,2022-01-01,100000,消费,正式
张学油,2022-01-02,500000,收入,正式
张学油,2022-01-03,900000,收入,测试
王力鸿,2022-01-01,500000,消费,正式
王力鸿,2022-01-02,300000,消费,测试
王力鸿,2022-01-03,950000,收入,正式
刘德滑,2022-01-01,300000,消费,测试
刘德滑,2022-01-02,100000,消费,正式
刘德滑,2022-01-03,300000,消费,正式

fr = open("D:/bill.txt","r",encoding="UTF-8")
fw = open("D:/bill.txt.bak","w",encoding="UTF-8")
for line in fr:
    line = line.strip()  # strip函数去除两边的空格和换行符
    if line.split(",")[-1] == "测试":
        continue
    #continue进入下一次循环,这一次后面的内容就跳过了
        #将内容写出去
    fw.write(line)
        #由于前面对内容进行了strip()的操作1,所以要手动的写出换行符
    fw.write("\n")
fr.close()
fw.close()

大家注意使用分隔符split注意是中文逗号还是英文逗号

标签:文件,01,读取,python,2022,close,操作,line
From: https://blog.csdn.net/2401_87332612/article/details/143027522

相关文章

  • 医疗行业文件同步管理,如何保障准确性和高效性双管齐下?
    医院、诊所、制药公司等医疗行业企业需要管理患者的健康记录、病历、药物研发数据等敏感信息。这些数据的丢失可能导致严重的法律后果和声誉损失,因此文件同步备份是必须的。常用的文件同步方式有以下几种:云存储服务:云存储服务是最简单的文件同步方式之一。用户可以选择云存储服......
  • Python 常用模块(五):datetime模块
    目录一、常见时间名词二、datetime模块介绍三、datetime模块中的常量以及几个常用类3.1datetime模块中的常量3.2datetime模块中的几个常用类3.2.1date类3.2.2time类3.2.3datetime类3.2.4timedelta类3.2.5timezone类四、常用方法介绍4.1datetime对象常用方法4.1......
  • ctfshow(78->81)--文件包含漏洞
    Web78源代码如下:if(isset($_GET['file'])){$file=$_GET['file'];include($file);}else{highlight_file(__FILE__);代码审计:使用include()进行文件包含,通过GET方法传递参数file获取被包含的文件。思路:利用data://伪协议,执行系统命令,获取flag......
  • Python基础知识总结
    变量#变量定义name="name"age=18height=1.75#多个变量赋值a=b=c=1print(a,b,c)字符串#字符串定义及输出str1="hello"str2='world'print(str1,str2)#字符串格式化输出print("name:%s,age:%d,height:%.2f"%(name,age,height))#字符串拼接str3=str1+str2pri......
  • Response & web登录操作 -2024/10/17
    响应行设置响应状态码:voidsetStatus(intsc);设置响应头键值对:voidsetHeader(Stringname,Stringvalue);response实现重定向resp.setStatus(302);resp.setHeader("location","https://www.4399.com");前端a.html登录,将结果传给后端,用request接收,用M......
  • 【哈工大_操作系统实验】Lab5 基于内核栈切换的进程切换
    本节将更新哈工大《操作系统》课程第五个Lab实验基于内核栈切换的进程切换。按照实验书要求,介绍了非常详细的实验操作流程,并提供了超级无敌详细的代码注释。Linux0.11采用TSS和一条指令完成任务切换,虽然简单但执行时间长。堆栈实现任务切换更快,且可以使用指令流水......
  • hdfs集群的shell操作
    1.进程启停管理:一键启动hdfs集群: start-dfs.sh一键关闭hdfs集群: stop-dfs.sh单独控制进程启停:hadoop-daemon.sh(start|status|stop)(namenode|datanode|secondarynamenode)     或者hadoop--daemon(start|status|stop)(namenode|datanode......
  • Ansible操作MySQL常用的几个模块
    1. mysql_user模块mysql_user模块用来添加,删除用户以及设置用户权限创建MySQL数据库的用户与口令(非root@localhost用户),直接通过playbooks中的案例来说明吧。-name:创建MySQL数据库用户--user_testmysql_user:#-----登陆数据库login_host:"localhost"......
  • Aubo Robotics 工业机器人系列编程:i10a_Aubo-i10a安全操作规范
    Aubo-i10a安全操作规范1.安全操作的重要性在工业机器人操作中,安全性是最基本也是最重要的要求。Aubo-i10a工业机器人作为一款高精度、高灵活性的机器人,其安全操作规范不仅关系到机器人的正常运行,更关系到操作人员的人身安全。本节将详细介绍Aubo-i10a工业机器人的安全......
  • 使用vs2022将.net8的应用程序发布为一个单独文件
    在使用.NetCore3.1时,可以通过设置以下工程配置文本来将项目发布为一个单独的应用程序文件:<ProjectSdk="Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><UseWPF>true</UseWPF> <Publi......