1,什么是Python的IO(底层)
2,python的open()函数(读取字符和字节文件)(with语句块的使用)
3,python的xxx.write()方法
4,Python文件的备份
5,密码字典生成器
壹 什么是Python的IO
input && output 输入和输出;
简单的说就是将内存中的瞬时数据持久化到硬盘上;
其实在控制台接收数据的input函数也算是IO的一部分,但我们今天主要是讨论一下从内存和硬盘中IO数据的一些方法
贰 python的open()函数
有点多,先简单说一下操作文件的第一步:打开文件:
open(文件路径,打开模式)
"""
调用open函数打开一个文件
open函数打开当前工作空间下的a.txt文件
第二个参数表示打开文件的模式
默认不写,则是rt,表示读取文件
默认读取的数据是文本文档
第二个参数的说明文档摘要:
========= ===============================================================
Character Meaning
--------- ---------------------------------------------------------------
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)
========= ===============================================================
"""
f = open("C:\\Users\\Administrator\\Desktop\\code\\b.txt", "rt", encoding="utf-8")
这样就成功的打开了"C:\\Users\\Administrator\\Desktop\\code\\b.txt"路径下的这个文件
模式 | r | r+ | w | w+ | a | a+ |
读 | + | + | | + | | + |
写 | | + | + | + | + | + |
创建 | | | + | + | + | + |
覆盖 | | | + | + | | |
指针在开始 | + | + | + | + | | |
指针在结尾 | | | | | + | + |
不知道用啥的时候,就用W+,全能的
file.read(size)
为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
f = open("C:\\Users\\Administrator\\Desktop\\code\\b.txt", "rt", encoding="utf-8")
print(f.read())
file.close()
在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。
f = open("C:\\Users\\Administrator\\Desktop\\code\\b.txt", "rt", encoding="utf-8")
print(f.read())
f.close()
with语句块
with语句块 在IO操作的时候,发现IO一旦打开,必须关闭;关闭操作又很容易被程序员忘记!
python为大家提供with 在python如果使用with 打开IO,则with结束时 自动调用io的close,就不用在写file.close()了
with open("C:\\Users\\95385\\Desktop\\test.txt", "a") as f:
f.write("alexz NB\n")
"""
这样子就成功用“a”追加模式打开了一个文件,并且在里面写下了一行字符串,并换行;
通过with语句块写的IO操作在末尾可以不用协商close(),因为编译器会自动执行关闭命令
"""
file.write()方法
f.write(string) 将 string 写入到文件f中, 然后返回写入的字符数。
但是前提写入的东西必须是字符串,若不是字符串记得用 str() 转化一下
msg = "abcdefg\n"
f = open("C:\\Users\\95385\\Desktop\\test.txt", "w")
print(f.write(msg))
f.close()
"""
运行结果就是8,因为7个字符加上一个换行
mode=a,a append,表示在文档末尾再追加数据
不会覆盖原有数据
如果是mode='x',表示该文件必须在不存在的情况下,第一次打开,就会创建文件
"""
肆 用open函数进行数据的复制(备份)
def copy_file():
with open("C:\\Users\\95385\\Desktop\\test.jpg", "rb") as fr: #这里的图片,并不是字符串类型的数据,所以进行读写操作的时候需要使用 “b” 字节类型的数据
"""
|------- 这里是用的是with语句块 -------|
"""
with open("C:\\Users\\95385\\Desktop\\test2.jpg", "ab") as fw:
while True:
# fr.read() # 不要这样读取数据
content = fr.read(10 * 1024 * 1024) # 一个10M为单位读取数据,防止读取过多,导致内存不够用,电脑蓝屏
if content != b'':
fw.write(content) # 直接将数据读取到内存中的content来进行转发
else:
break
copy_file()
可以吧函数的形参变一下,就可以任意路径进行数据备份了
伍 密码字典生成器py脚本实现
# @Time : 2020.02.28
# @Author : Alexz__
# @File : 密码字典生成器.py
num = ["0","1","2","3","4","5","6","7","8","9"] #可以自行添加需要排列组合的元素
with open("C:\\Users\\95385\\Desktop\\密码字典.txt","w") as fw: #添加密码字典输出路径
for x in range(0,10): #要输出多少位密码就要有多少个for循环
for y in range(0,10):
for z in range(0,10):
for j in range(0,10):
for k in range(0,10):
dic = [num[x],num[y],num[z],num[j],num[k]]
passwd = ''.join(dic) #通过join方法将列表拼接成字符串,才得以输出
fw.write(passwd+'\n') #密码字典的通用写法:一行一个