python os与random模块

(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()
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^