12文件操作

一计算机的内存分为硬盘和运行内存。

硬盘是用来存文件的,除非手动删除,否则不会销毁。
运行内存是用来存储,程序运行过程中的数据,当程序运行结束后自动销毁。
如果希望程序中产生的数据,在程序运行结束后不销毁,就需要将数据存到硬盘
中,就是需要存在文件中。
2.程序中存储的常用的文件:
txt文件,json文件,plist文件,数据库文件。
图片文件(png,jpg)音频文件(mp3,wav),视频文件。。。。
3.文件操作:--操作文件的内容
步骤:
打开文件---操作文件(读\写)
关闭文件---
"""

2.1打开文件

"""
open(file,mode="r",encoding="utf-8")
分别是:文件地址,打开的方式,文本编码的方式
以指定的方式打开指定的文件,并返回对象。
file 文件的路径:
可以传文件的决定路径和相对路径
绝对路径:文件在计算机中的路径
相对路径:./ 表示当前目录,(当前目录所在的就是当前这个代码所在的文件夹。)
../当前目录的上层目录。
在windows中打开的文件的路径是反斜杠,前面加个 "r"就行了。不然要报错。
mode:
文件袋饿打开方式,决定文件打开后的操作,能读还是写,r/w,操作文件的时候的数据是什么类型,文本还是二进制,(t/b).
r--只读
w--只只写
a---只写,
t--文本数据
b---二进制数据
没写就是默认是文本的数据,
r(rt/tr)--打开文件后只能进行读操作,读出来的数据是字符串。
rb/br-----打开文件后只能进行读操作,读出来的数据是二进制。
w--相当于w/t和t/w---打开的文件只能进行写的操作,写入的是文本就是。还能打开的时候先清空文件。
wb/bw-----打开文件后只能进行写的操作,写入的是二进制,打开清空原文件
a(at/ta)---打开文件后只能进行写的操作,写入的是字符串,打开的时候不清空原文件,
ab/ba----打开文件后只能进行写的操作,写入的是二进制的数据,打开的时候不会清空文件。

注意:a,w在打开文件的时候,如果没有文件,就自动创建,r打开的时候如果没有文件,会报错。

encoding ---文本文件的编码方式,只能以t的方式打开文本文件的时候可以直接赋值。
unicode 转换成 utf-8和gbk的时候都是要encode(编码)
utf-8,gbk 转换成unicode的时候要decode.

2.2操作文件
读操作,写操作
文件.read()--支持所有的文件

读文件就是读光标,读一行光标在一行末尾,如果在读全部就是从一行末尾开始。
f.seek(n) 光标移动到文件的开头,将读写位置移动到第N个位置

文本文件打开方式带b,读出来的是二进制的数据。
二进制的在读取的数据的时候必须带b ,除了文本以外的数据。
2.3写的操作
文件对象.write(内容)--将指定的内容写入到指定的文件中。
如果写的时候带b,写入的数据必须是二进制。
2.4数据的持久化
1.需要数据的时候不是在程序中直接给初始值,而是从文件中直接读值
2.需要持久化的数据要保存在文件中
4.打开后作用域后就会自动关闭。with open().......

"""
tex = open("./testtxt", "r", encoding="utf-8")
cont=tex.read()
print(cont)

读一行。。。。。。

tex=open("./testtxt","r",encoding="utf-8")
tex.readline()
tex.seek(0)#这个时候再把光标移动到开头
cont=tex.read()
print(cont)

读指定文本文件中的内容,一行一行的读,读完为止。

tex = open("./testtxt", "r", encoding="utf-8")
while True:
tex1 = tex.readline()
if not tex1:
break
print(tex1)
tex.close()

写入文件

f1=open("./testtxt", "a", encoding="utf-8")
f1.write("我是不会清空的,我是a")
f1.write("我是会清空的,我的写入方式是W")

练习,在一个程序中用一个变量来记录当前程序启动的次数。

f=open("./test", "r", encoding="utf-8")
count=int(f.read())
print(".........",count)
count+=1
f=open("./test", "w", encoding="utf-8")
f.write(str(count))
with open(r"D:\项目\预科项目\水管工人\水管工人.jpg","rb") as file3:
file2=file3.read()
print(file2)

每次运行程序添一个学生,要求之前添加的还在。

name=input("请输入名字:")
with open("./student_list.txt","a",encoding="utf-8") as file_s:
fil4=file_s.write(name)
with open("./student_list.txt", "r", encoding="utf-8") as file_s2:
file5 = file_s2.read()
print(file5)

怎么将字符串转换成列表?

eval()将字符串去掉引号后本省就是列表,字典。

eval()将字符串转换成容器型类型的数据,要求字符串去掉引号后本身就是一个合法的。

二json数据格式。

import json #json是python提供的专门处理json数据的,
"""
json是一种数据格式 ,通用的。
所有的语言都有json数据格式。
"""

json数据格式:

1.一个json只有一个数据

2.唯一的这个数据必须是json支持的数据类型的数据。

"""
json支持的数据类型有哪些:数字类型--
1.包括所有的数字,复数只有python支持,并且支持科学计数法。数字直接写。
2.字符串:文本数据,只能使用双引号引起来,"hello",支持转义字符和编码字符,"abc\n123"
3.布尔:只有true 和false
4.空值: null(表示空)
5.数组(array):[元素1,元素2,元素3.。。。。。。。。]里面的元素可以是json支持的任何类型的数据。
[100,200,"abc",true,false,null]
6.字典: {key1:value1,key2:value2,key3:value3}---要求key必须是字符串。
"""

1.json转python,转换规律

"""
json python
数字 in/flaot
字符串 字符串:双引号一般变成单引号
布尔 布尔:true-True false---False
null None
数组 列表
字典 字典

json.loads()将json格式的字符串换成python对应的数这个对应的数据。
注意:要求这个字符串去掉引号的内容必须是json格式的数据。
"""
result=json.loads('"1000"')
print(result)
result2=json.loads('true')
print(result2)

2.python 转json

"""
(1)转换的规律:
python json
int/float----数字
字符串--------字符串 单引号变成双引号
布尔值---------True---true False---false
None null
列表/元组 数组
字典 字典
方法:dumps(数据)--将python数据转换成json格式的字符串。
"""
res=json.dumps(100)
print([res])

['100']

你可能感兴趣的:(12文件操作)