这些值得一提 2021-11-28 14:20 采纳率: 100%
浏览 287
已结题

用python解决以下问题,尽量简单易懂

  1. 实验内容
  2. 编写一个程序:
    a. 这个程序会在源代码所在文件夹创建一个新的文件夹名称为outputForLab3
    b. 程序会在outputForLab3文件夹里面创建50个txt文件
    (1) 这50个txt文件的文件名由英文字母和数字构成,随机生成5位长度文件名
    (2) 这50个txt文件里面随机写入不同的内容,做到大小不一。比如有的文件3行内容,有的文件500行内容。
    c. 创建完成以后,程序会读取这50个文件的文件路径和大小,把这些数据逐行写入filesize.txt文件中保存起来,filesize.txt存在outputForLab3文件夹外面,也就是你源代码所在文件夹。
    d. 用zipfile库把outputForLab3文件夹里面的文件打包成一个zip压缩包,取名称为output3.zip
    e. 用正则表达式读取filesize.txt里面的文件大小信息,把里面所有文件的大小加起来和output3.zip的大小进行比较。看哪一个大,并输出两者大小的差距,计算打印zip的压缩率。
  3. 编写一个程序:
    a. 这个程序会读取第一个题目中程序创建的filesize.txt,把里面的文件按照文件大小从小到大进行排列,找到里面排在第40的文件,打印出文件路径和文件大小
    b. 如果文件中,在任何一行开始的地方有“-d-”这3个字符,程序就把这一行文件路径的文件删除了,并记录下删除文件的文件路径,filesize.txt文件浏览完,删除完成所有带有-d-符合的文件后,打印出删除文件的文件路径,一行打印一个文件路径。
  4. 实验步骤和结果
  5. 要求涉及文件打开操作的,要用with statement
  • 写回答

2条回答 默认 最新

  • 关注
    import os
    import string
    import random
    import zipfile
    pool = string.ascii_lowercase + string.digits
    root = 'outputForLab3'
    count_file = 'filesize.txt'
    zip_file = 'output3.zip'
    file_size = 0
    zip_size = 0
    
    
    def random_select(k):
        return ''.join(random.choices(pool, k=k))
    
    
    print(pool)
    if not os.path.exists(root):
        os.mkdir(root)
    for i in range(50):
        rd = random_select(5)
        with open(os.path.join(root, rd+'.txt'), 'w+') as f:
            f.write(random_select(random.randint(10**3, 10**5)))
        # pass
    z = zipfile.ZipFile(zip_file, 'w')
    with open(count_file, 'w+') as out:
        for p, d, f in os.walk(root):
            for file in f:
                out.writelines(os.path.join(p, file)+' size:' +
                               str(os.path.getsize(os.path.join(p, file)))+'\n')
                file_size += os.path.getsize(os.path.join(p, file))
                z.write(os.path.join(p, file))
            z.close()
            zip_size = os.path.getsize(zip_file)
    print(file_size, zip_size, file_size-zip_size, (file_size-zip_size)/file_size)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月3日
  • 已采纳回答 11月29日
  • 创建了问题 11月28日

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能