(2) 数据随机存储,掌握os与random模块的用法以及文件读写方法。
定义一个函数fs(dirname,s),其中参数dirname表示文件夹路径名,s为字符串,表示需要保存的数据。函数fs的功能是随机地将字符串s存储到dirname路径下某个文本文件(“*.txt”文件)中。假如dirname路径下已有”a.txt”、 ”b.txt”、 ”c.txt”三个或更多文本文件,字符串s可能被保存到”a.txt”,或”b.txt”,或 ”c.txt”,或其他文件,机会是相同的,并且不能覆盖原有的文本文件。如果dirname路径下不存在任何文本文件,则新创建“new.txt”文件来保存字符串s。
import os
import random
def fs(dirname,s):
'''dirname表示文件夹路径名,s为字符串,表示需要保存的数据'''
txtFiles = [] #dirname 目录下txt文件名称
os.chdir(dirname) #切换到dirname目录下
for item in os.listdir('.'): #罗列当前目录下所有内容
if os.path.isfile(item): #判断是否为文件
if item.endswith('.txt'): #判断文件是否以txt结尾
txtFiles.append(txtFiles)
#如果有文件,就随机选择一个txt文件写字符串s的内容
if txtFiles:
filename = random.choice(txtFiles)
with open(filename,'a',encoding='utf-8') as wf:
wf.write(s+'\n')
else:
with open('new.txt','w',encoding='utf-8') as wf:
wf.write(s+'\n')
fs(dirname='/root',s='aaa')
可以参考如下代码:
import os.path
import random
def fs(dirname, s):
if not os.path.exists(dirname):
print(f"路径{dirname}不存在,请确认后重试!")
return
# 切换到路径dirname
os.chdir(dirname)
# 获取路径dirname下所有文件
file_name_list = os.listdir(dirname)
# 过滤出txt文件集合
txt_file_name_list = []
for file_name in file_name_list:
if file_name.endswith(".txt"):
txt_file_name_list.append(file_name)
# 若路径dirname下没有txt文件,则新建new.txt文件;否则随机获取一个路径下的文件
if len(txt_file_name_list) == 0:
write_file_name = "new.txt"
else:
write_file_name = random.choice(txt_file_name_list)
file = open(write_file_name, "a+", encoding="utf-8")
file.write(s)
file.close()
不知道你这个问题是否已经解决, 如果还没有解决的话: