r:只读模式,用于打开文件以供读取。如果文件不存在,会引发 FileNotFoundError 异常。
w:覆盖写模式,用于创建或打开文件以供写入,如果文件已经存在,会完全覆盖原文件的内容。
x:创建写模式,用于创建新文件以供写入,如果文件已经存在,会引发 FileExistsError 异常。
a:追加写模式,用于创建或打开文件以供写入,如果文件不存在,会创建新文件,如果文件已经存在,会在原文件最后追加内容。
b:二进制文件模式,用于指示文件以二进制模式打开。例如,rb 表示以二进制模式打开文件以供读取。
t:文本文件模式,用于指示文件以文本模式打开。这是默认模式,通常不需要显式指定。
+:与 r、w、x、a 一同使用,表示在原有模式的基础上增加读写功能。
f.read(size=-1): 从文件中读取整个文件内容。参数 size 是可选的,如果给出,将读取前 size 长度的字符串或字节流。
f.readline(size=-1): 从文件中读取一行内容。参数 size 是可选的,如果给出,将读取该行前 size 长度的字符串或字节流。
f.readlines(hint=-1): 从文件中读取所有行,以每行为元素形成一个列表。参数 hint 是可选的,如果给出,将读取 hint 个字节。
f.seek(offset): 改变当前文件操作指针的位置,其中 offset 的值可以是:
0:文件开头。
2:文件结尾。
请注意,如果文件以文本文件方式打开,则读取的是字符串数据;如果文件以二进制方式打开,则读取的是字节流。根据打开方式不同,可以选择适合的读取方法来处理文件内容。
f.write(s): 向文件写入一个字符串或字节流
f.writelines(lines): 将一个元素为字符串的列表整体写入文件
请编写程序,生成随机密码。具体要求如下:
(1)使用 random 库,采用 0x1010 作为随机数种子。
(2)密码 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&* 中的字符组成。
(3)每个密码长度固定为 10 个字符。
(4)程序运行每次产生 10 个密码,每个密码一行。
(5)每次产生的 10 个密码首字符不能一样。
(6)程序运行后产生的密码保存在“随机密码.txt”文件中。
import random
random.seed(0x1010)
initial = "" #存放首字母
ls = [] #存放密码
while len(ls) < 10:
ret = ""
for i in range(10):
res = random.choice("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!")#从该字符串随机选一个
ret = ret + res
if ret[0] in initial: #如果该密码的首字母在首字母仓库存在
continue
else:
ls.append(ret)
initial += ret[0]
secret = '\n'.join(ls)
print(secret)
with open("随机密码.txt", "w", encoding = "utf_8") as f:
f.write(secret)