文件操作知识

文件操作

1.计算机的存储数据

默认情况下:程序中的数据是保存在运行内存中,当程序运行结束,在运行内存中保存的数据会自动销毁。如果希望再次运行程序的时候可以使用上一次程序产生的数据,就必须包数据保存再硬盘中。

硬盘保存数据的最小单位就是文件。

2.数据持久化

以文件为单位将数据保存在硬盘中

3.怎么将程序中的数据保存到文件中?怎么在程序中获取文件中的内容?

方法:文件操作

4.操作文件内容

基本流程:打开文件----->文件读写操作----->关闭文件

1)打开

open(file,mode=“r”,encoding=None)--------以指定的方式打开指定的文件,返回一个文件对象

file-----需要打开的文件路径

参数一:路径:绝对路径、相对路径

绝对路径:文件在计算机的全路径(win:从盘开始)

open( r’\E:\BaiduSyncdisk\前锋学习\第三周\dakai) rE:\BaiduSyncdisk\前锋学习\第三周\dakai)-----有问题

相对路径:用点’.'代表当前目录,用"…"代表当前目录上层目录

​ (当前代码文件时当前代码文件所在的文件夹)

注意:如果要使用相对路径,被打开的文件必须放在工程中

open(‘.’)----有问题

如果路径是以"./"开头的,'./'可以省略

参数二:文件打开方式-------用来确定打开文件后能做什么(能读还是能写)、操作文件的时候对应的数据的类型(是字符串还是二进制类型)

给modle赋值的时候需要两组值:

第一组:决定打开后能做什么的对应的值

r ----只读

w-----只写(打开的时候会清空原文件)

a-----只写 (在原文件基础上,后面追加新的内容)

第二组:决定操作文件的时候数据的类型

t----字符串

b----二进制(bytes)

赋值的时候上面两组值每一组都必须选择一个(如果第二组值不选,就相当于选的是"t")

rt, rb ,tr

#r是只读
f=open('./flies/abc/txt',"r")
f.read( )-----可以操作
f.write("123")-----不能操作


#w只写,且清空
f=open('./flies/abc/txt',"w")----打开的时候就清空
f.write("123")



#a只写,不会清空原文件
f=open('./flies/abc/txt',"a")
f.write("123")

#t的类型是字符串
f=open('./flies/abc/txt',"rt")
result=f.read( )
print(type(result))

参数三:encoding-------文本文件编码方式(只有在以t方式打开文件的时候,才需要设置encoding)

一般赋值为:“utf-8”,"gbk"也是一种常见的编码方式

utf-8:(文本数据在存储的时候,ascii表中用一个字节,汉字为3个字节,可以对任何符号编码)

gbk:文本数据在存储的时候,ascii表中用一个字节,汉字为2个字节。除了ascii表与中文以外,不能对其他符号编码

使用编码值的原则:存储数据的时候使用编码值要和获取数据对应的编码值一致

3.设置encoding

f=open( './flies/abc/txt','w',encoding='utf-8')

乱码出错的原因:不是数据有问题,是编码方式不一样。

文件读操作

1.文件对象 .read( )-----获取整个文件内容(从读写位置开始,读到文件结束。读写位置默认在文件开头,随着读操作的进行读写位置会不断改变)

f=open('./0102/text.txt',encoding="gbk")
result = f.read()
print(result)

2.文件对象.readline( )----获取一行内容(只有文本文件有效)

f=open('./0102/text.txt',encoding="gbk")
result = f.readline()
print(result)  #123你好abc

result = f.readline()
print(result)  #sadadasd

result = f.readline()
print(result)  #sadasfas

f.seek(0) #让读写位置移动到文件开头

f.seek(0)
result = f.readline()
print(result)

3.文件对象.readlines()-----获取整个文件内容,返回一个列表,每行内容就是一个元素(只有文本文件有效)

f=open('./0102/text.txt',encoding="gbk")
result = f.readlines()
print(result)

#['123你好abc\n', 'sadadasd\n', 'sadasfas']

3.文件写操作

方法一:文件对象.write(数据)

f=open('./0102/text.txt',"a",encoding="gbk")
f.write("1234abc")

方法二:文件对象.writelines(列表)

f=open('./0102/text.txt',"a",encoding="gbk")
f.writelines(['1','2','3'])

4.关闭文件

文件对象.close( )-----文件加密

f=open('./0102/text.txt',"a",encoding="gbk")
f.close( )

5.文件操作的运用

数据持久化

1)、确定需要持久化的数据

2)、创建保存需要持久化数据的文件

3)、确定文件初始内容(需要持久化的数据的初始值)

4)、在程序中需要这个数据的时候从文件中获取整个数据(读)

5)、在程序中写修改数据后,必须将最新的数据写入到文件中(写)

#写程序打印程序运行次数

1)、确定需要持久化的数据------运行次数count

2)、创建保存需要持久化数据的文件----count1.txt
3)、确定文件初始内容(需要持久化的数据的初始值)----在文件中保存初始值为0

f = open('./0102/count.txt', encoding='utf-8')
count1 = int(f.read())-----文件读取的结果就是次数

count1 += 1
print(count1)

# 5)在程序中修改数据后,必须将最新的数据写入到文件中
f = open('./0102/count.txt', 'w', encoding='utf-8')
f.write(str(count))
f.close()


#先读数据,读完后,在添加次数,在写进文件

#练习:提示用户输入名字添加学生,添加完后打印已经添加过所有学生的名字
"""
第一次运行:
输入:小明
小明

第二次运行:
输入:小花
小花


第三次运行:
输入:张三
张三
"""
1.确定持久化数据
2.创建文件
3.初始值----None
4.获取

name=input("请输入你的名字")
#在程序中需要整个数据的时候从文件中获取整个数据

f=open("./0102/count.txt",encoding="utf-8")
name1=f.read()+name  #字符串加法

print(name1)
#修改数据
f=open("./0102/count.txt","w",encoding="utf-8")
f.write(name1)

#先显示,再存储数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值