文件操作与常用模块
文件操作:
1.程序的运行运行的顺序:保存到(硬盘)—>内存—>CPU(运行)
2.在启动程序中,电脑会被硬盘中的代码放到内存中。
3.CPU从内存里面读取数据、运行。
文件操作的三个步骤:1、打开文件。2、操作文件。3、关闭(保存)文件。
自动化办公:在自动化办公中,可以批量操作电脑文件(doc,txt,excel)
一般文件居多。
如何让python操作文件?
open(文件名/文件路径,操作模式,字符编码))
操作系统: w:write 写入数据,如果文件有数据全部覆盖过去。
a:append 追加数据, 如果文件有数据就追加后面。
r:read 读取数据。
字符类型: b:byte也叫二进制模式,以字符串编码来操作数据。——>目前还用不上,以后爬虫会讲到。
t:text文本模式,文本操作默认为文档模式。
格式:变量名=open(文件名/文件路径,操作模式,字符编码)
#操作文件
f=open("1.txt",'w',encoding='utf-8') #w是声明写入模式的代码。
f.write("vivoX90的目标实现了,哈哈12+256GB的") # 使用write方法进行写入。
f.close() #如果操作完了,文件是要关闭的,如果不关闭会内存泄漏。
a=f.read() #读取时需要变量储存。
print(a)
f.close()
追加:
f=open("1.txt",'ab',encoding='utf-8') #默认是t—>文本模式
a=f.write("来之不易".encode())
f.close()
相对路径和绝对路径
绝对路径:从广东广州市天河区车陂大岗路2号联合社区西区1C栋二楼全层。
相对路径:联合社区西区1C栋二楼全层。
------------------------------------------------------------------------------------------------------------------------
计算机路径:
绝对:C\users\EDZ\Desktop
相对:….\Desktop.
———————————————————————————————————————————
常用模块:
#系统模块.——>sys模块.目前了解就好。
import sys
#获取python环境变量。
print(sys.path)
#获取当前文件所在位置。
print(sys.argv)
#获取python的版本信息。
print(sys.version)
#获取当前操作系统的架构。
print(sys.platform)
json模块
它是一种文件的储存格式
优点:是可以被大部分编程语言所识别并且操作,并保持原来类型。
跨平台/语言——>能有很好的兼容性。
序列化与反序列化
程序员写的代码,文件在编辑的时候,使用反序列数据。而文件在传输或者储存的时候使用序列数据。
一种机器码,计算机的底层语言(0和1)
例如:
import json
names={'stu1':'资名扬','stu2':'廖奕','stu3':'王刚'}
#如果我直接用上下文件管理保存,就会丢失原来的格式。
with open('a.txt','w',encoding='utf-8')as f:
f.write(str(names))
#为了类型不改变,我们可以使用json文件进行保存传输。
#用json.dumps(数据)——>数据序列化。
jsonData = json.dumps(names)
#读取:反序列化。
json.loads(序列化数据)
count = json.loads(jsonData)
print(count)
print(type(count))
with open('a.json','w',encoding='utf-8') as f:
json.dump(name,f) #写入数据
with open('a.json','w',encoding='utf-8') as f:
stuDict = json.load(f) #写入数据
print(stuDict)
print(type(stuDict))
这是输出效果
OS模块
#操作系统模块 OS
import os
#获取当前文件夹所在位置。
print(os.getcwd())
#新建文件夹
os.mkdir("哈哈哈")
#更改名字
os.rename(原名,新名)——>例如:os.rename('a.txt','a1.txt')
运行效果如下:
#os.listdir() 输出当前文件夹里面的所有文件。
print(os.listdir())
#os.system(cmd指令)运行cmd指令。
os.system('shutdown-s-t 30000000')——>此指令请慎用,这个是注销登录的代码。
for i in range(70):——>数值调成7吧。
os.system("start cmd")
这个代码的具体输出效果,慎用。
hashlib模块
哈希模块(本质上是一个算法,用得比较多是数据加密)。
哈希是一种规则,可以接受一个值。来生成一个哈希数据,作用来加密。
就像算命一样,算命给你说:桃花劫你需要我来解开。
注册登录账号的原理流程:
注册:1.输入密码
2.哈希加密→得到了加密后的数值→保存等。
登录:1.输入密码→ 匹配.
2.哈希加密 → 得到
md5=md5是目前比较主流方式,但并不安全
例:import hashlib:
a= 'abcd'
b= hashlib. md5(a.encoding())
print(a)
print (type(b))
print(b)
返回摘要,即:返回一个16进制数据,数值固定32位
c=b.hexdigest()
print(c)
print(len(c))
# 返回一个16进制数据,数值固定16位。
e= b.digest()
print(e)
print(len(e))
输出效果如图所示。