Python的IO简析(附密码字典生成器py脚本)

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')                   #密码字典的通用写法:一行一个
发布了36 篇原创文章 · 获赞 40 · 访问量 8915

猜你喜欢

转载自blog.csdn.net/Alexz__/article/details/104555136
今日推荐