DataWhale 文件自动化处理练习第一次作业打卡

知识点:
在这里插入图片描述

1、如果已有的文件以写模式打开,会发生什么?

以写’w’模式打开,写入时会覆盖原有的文件;
以添加模式’a’打开,写入时会在已有文件的末尾添加文本。

2、read()和readlines()方法之间的区别是什么?

read() – 读取文件内容为一个字符串
readlines() – 按行读取文件内容,取得一个字符串列表,列表中的每个字符串是文本中的一行且以\n结束

综合练习: 一、生成随机的测验试卷文件 假如你是一位地理老师, 班上有 35 名学生, 你希望进行美国各州首府的一个 小测验。不妙的是,班里有几个坏蛋, 你无法确信学生不会作弊。你希望随机调整 问题的次序, 这样每份试卷都是独一无二的, 这让任何人都不能从其他人那里抄袭答案。当然,手工完成这件事又费时又无聊。 好在, 你懂一些 Python。

下面是程序所做的事:

• 创建 35 份不同的测验试卷。

• 为每份试卷创建 50 个多重选择题,次序随机。

• 为每个问题提供一个正确答案和 3 个随机的错误答案,次序随机。

• 将测验试卷写到 35 个文本文件中。

• 将答案写到 35 个文本文件中。

这意味着代码需要做下面的事:

• 将州和它们的首府保存在一个字典中。

• 针对测验文本文件和答案文本文件,调用 open()、 write()和 close()。

• 利用 random.shuffle()随机调整问题和多重选项的次序。

import random

capitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', 'Arizona': 'Phoenix',
'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver',
'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee',
'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boise', 'Illinois':
'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines', 'Kansas':
'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine':
'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston', 'Michigan':
'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson', 'Missouri':
'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada':
'Carson City', 'New Hampshire': 'Concord', 'New Jersey': 'Trenton', 'New'
'Mexico': 'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh',
'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City',
'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence',
'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee':
'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont':
'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 'West'
'Virginia': 'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'}


# 随机生成35份试卷
for quizNum in range(35):
    # 创建试卷和答案的txt文件
    quizFile = open('CapitalQuiz%s.txt'%(quizNum+1),'w')
    answerFile = open('CapitalQuizAnswers%s'%(quizNum+1),'w')

    # 写入试卷抬头
    quizFile.write('State Capital Quiz (Form %s)'%(quizNum+1))
    quizFile.write('\n\n')
    quizFile.write('Name\n\nDate:\n\nPeriod\n\n')
    # 打乱州的顺序
    states = list(capitals.keys())
    random.shuffle(states)
    # 循环50个州出题
    for qNum in range(50):
        # 获取正确答案
        correctAns = capitals[states[qNum]]
        # 排除正确答案,得到所有错误答案列表
        wrongAns = list(capitals.values())
        del wrongAns[wrongAns.index(correctAns)]
        # 从列表中随机取三个作为最后的错误答案选项
        wrongAns = random.sample(wrongAns,3)
        AnsOptions = wrongAns+[correctAns]
        random.shuffle(AnsOptions)

        # 出题
        quizFile.write('%s. What is the Capital of %s?\n'%(qNum+1,states[qNum]))
        for i in range(4):
            quizFile.write('%s. %s\n'%'ABCD'[i],AnsOptions[i])
        quizFile.write('\n')
        # 写入相应答案
        answerFile.write('%s. %s\n'%(qNum+1,'ABCD'[AnsOptions.index(correctAns)]))

    quizFile.close()
    answerFile.close()

编写一个程序,遍历一个目录树,查找特定扩展名的文件(诸如.pdf 或.jpg)。不论这些文件的位置在哪里, 将它们拷贝到一个新的文件夹中。

import os
import shutil

# 原文件夹地址
path = '/Users/euphie_fuyy/Desktop/Datawhale/Practice/Pictures'
# 即将拷贝到的新文件夹地址
path_new = '/Users/euphie_fuyy/Desktop/Datawhale/Practice/Pictures_New'

for folderName, subFolders,fileNames in os.walk(path):
    for fileName in fileNames:
        if fileName.split('.')[-1] in ['jpg','png','jpeg']:
            path_old = os.path.join(folderName,fileName)
            shutil.copy(path_old,path_new)
print('已复制完成')

Reference:
DataWhale 自动化组队学习
os.path.getsize Returns Incorrect Value?
如何在 Mac 中隐藏文件或文件夹?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值