广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解Python自动化之文件自动化处理
  • 196
分享到

详解Python自动化之文件自动化处理

2024-04-02 19:04:59 196人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

一、生成随机的测验试卷文件 假如你是一位地理老师, 班上有 35 名学生, 你希望进行美国各州首府的一个小测验。不妙的是,班里有几个坏蛋, 你无法确信学生不会作弊。你希望随机调整问

一、生成随机的测验试卷文件

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

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

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

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

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

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

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

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

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

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

代码:


import random

#问题的数据保存在字典中,诗歌名称作为键,作者作为值。
poems={'1+3':'4',
'6+7':'13',
'9*3':'27',
'40-1':'39',
'38-13':'25'

}
#我们可以用上面的字典随机的出5份试卷
for num in range(5):
     #创建试卷和答案文本文件
     testFile = open('poem_test%s.txt' % (num + 1),'w')
     answerFile = open('poem_answer%s.txt' % (num + 1),'w')

     #创建试卷的头部格式
     testFile.write('姓名:\n\n日期:\n\n年级:\n\n')
     testFile.write('试卷号:%s' %(num + 1))
     testFile.write('\n\n\n')

     #随机获取诗歌名称
     names = list(poems.keys())
     random.shuffle(names)
#创建答案选项,这个for循环是要包含在上面一个for循环中的,因为哦们需要为每一个文件创建选项。

 for questionNum in range(10):
          #试卷的正确的选项,就是names列表中的值在字典中对应的作者
          correctAnswer = poems[names[questionNum]]
          #试卷的错误的选项,就是字典中所有的值
          #然后在每次循环过程中去掉其中的正确的那一项,
          wrongAnswers = list(poems.values())
          del wrongAnswers[wrongAnswers.index(correctAnswer)]
          #随机选择三个错误的答案
          #random中sample(seq, n)函数:从序列seq中选择n个随机且独立的元素;
          wrongAnswers = random.sample(wrongAnswers,3)
          #问题单包含的四个选项
          answerOptions = wrongAnswers + [correctAnswer]
          #打乱答案顺序
          random.shuffle(answerOptions)

#第四步:将内容写入测验试卷和答案文件
#将问题和答案写入文件中,\表示一行代码写不下可以换多行
          testFile.write('%s,%s的答案是:\n' % \
                         (questionNum + 1,names[questionNum]))
          for i in range(4):
               testFile.write('%s. %s\n'%('ABCD'[i],answerOptions[i]))
          testFile.write('\n')

          #写入答案
          answerFile.write('%s.%s\n' % (questionNum + 1,'ABCD'\
                                        [answerOptions.index(correctAnswer)]))
     testFile.close()
     answerFile.close() 



二、使用python创建并写入新文件

本节将介绍如何用程序组织硬盘上已经存在的文件。不知你是否经历过查找一个文件夹,里面有几十个、几百个、甚至上千个文件,需要手工进行复制、改名、移动或压缩。比如下列这样的任务:

• 在一个文件夹及其所有子文件夹中,复制所有的 pdf 文件(且只复制 pdf 文件)

• 针对一个文件夹中的所有文件,删除文件名中前导的零,该文件夹中有数百个文件,名为 spam001.txt、 spam002.txt、 spam003.txt 等。

• 将几个文件夹的内容压缩到一个 ZIP 文件中(这可能是一个简单的备份系统)

所有这种无聊的任务,正是在请求用 Python 实现自动化。通过对电脑编程来完成这些任务,你就把它变成了一个快速工作的文件职员,而且从不犯错。

  • get_all_file_by_type() :根据接收到的path 和type,获得该path下所有以type类型结尾的文件
  • get_all_file_by_string(): 根据接收到的path 和 list, 获得该path下所有的,包含list 里字符串的文件
  • copy_file_by_type(): 根据接收到的old_path,和type,调用get_all_file_by_type()方法。根据条件选择不同的执行代码
  • copy_file_by_string():同理,不过它调用的是get_all_file_by_string()方法


#python创建并写入新文件,

#python统计特定文件夹下的Word和pdf的数量
import glob,os

# path就是你说的特定文件夹
path = r"D:\linshi"

# 这里的pdf可以换成docx
file=glob.glob(os.path.join(path, "*.pdf"))

count = 0

for i in file:
    count = count + 1
    
print(count)
#复制文件的完整路径借助python对该文件夹的文件批量复制到另一个指定文件夹中。有两种模式,一种只复制文件。第二种复制文件的完整路径

import os
import shutil

def get_all_file_by_type(path, type=()):  # 获得以type类型结尾的所有文件,返回一个list

    filelist = []

    for a, b, c in os.walk(path):
        for name in c:
            fname = os.path.join(a, name)
            if fname.endswith(type):
                filelist.append(fname)

    return filelist


def get_all_file_by_string(path, string_list):
    filelist = []

    for a, b, c in os.walk(path):
        for name in c:
            fname = os.path.join(a, name)
            for string in string_list:  # 遍历string_list,如果文件路径中包含string,那么append进filelist
                if string in fname:  # 如果只想要文件名符合条件,把fname换成name即可
                    filelist.append(fname)
                    break

    return filelist


def copy_file_by_type(old_path, new_path, type=('doc', 'docx'), requird_dir=False):
    try:
        file_list = get_all_file_by_type(old_path, type=type)  # 获得该路径下所有的type类型文件

        if not os.path.exists(new_path):  # 创建新的文件夹
            os.makedirs(new_path)

        if not requird_dir:  # 如果仅复制文件
            for file in file_list:
                name = file.split("\\")[-1]  # 获得文件名字

                new_paths = os.path.join(new_path, name)  # 与新路径拼接,获得完整的新路径
                shutil.copy(file, new_paths)
                print(new_paths + "成功")

        if requird_dir:
            for file in file_list:
                name = file.split("\\")[-1]  # 获得文件名字
                new_paths = file.replace(old_path, new_path)  # 将一个完整路径中,开始的路径替换成新的路径
                dir = new_paths.split(name)[0]  # 获得文件夹路径
                if not os.path.exists(dir):  # 创建新文件夹
                    os.makedirs(dir)
                shutil.copy(file, new_paths)
                print(new_paths + "成功")
    except Exception as e:
        print(e)


def copy_file_by_string(old_path, new_path, string_list, requird_dir=False):
    try:
        file_list = get_all_file_by_string(old_path, string_list=string_list)  # 与上述一样,只不过这里调用的是get_all_file_by_string方法

        if not os.path.exists(new_path):
            os.makedirs(new_path)

        if not requird_dir:
            for file in file_list:
                name = file.split("\\")[-1]

                new_paths = os.path.join(new_path, name)
                shutil.copy(file, new_paths)
                print(new_paths + "成功")

        if requird_dir:
            for file in file_list:
                name = file.split("\\")[-1]
                new_paths = file.replace(old_path, new_path)
                print(new_paths)
                dir = new_paths.split(name)[0]
                if not os.path.exists(dir):
                    os.makedirs(dir)
                shutil.copy(file, new_paths)
                print(new_paths + "成功")
    except Exception as e:
        print(e)


if __name__ == '__main__':
    old_path = r"F:\aaaa"
    new_path = r"F:\bbbb"

    list = ["面试", "笔试", "题库", "题目"]
    copy_file_by_string(old_path=old_path, new_path=new_path, string_list=list, requird_dir=False)

    # type = ('docx','doc',"pdf","md")
    # copy_file_by_type(old_path=old_path, new_path=new_path, type=type, requird_dir=True)

#python压缩多个文件到zip格式-zipfile包实例
pip install zipfile
file=r'D:\test.zip'
out_path=r'D:\files'
#遍历files文件夹下的文件,压缩发送
zip_1=zipfile.ZipFile(file,'w')
	for f in os.listdir(out_path):
		zip_1.write(os.path.join(out_path,f),f,zipfile.ZIP_DEFLATED)
zip_1.close()

#python批量删除文件名_Python批量修改文件名
import os, re

while True:

keyword = input("请输入你要删除的字符串:")

if len(keyword)==0 or keyword.isspace():

print("字符串不能为空!")

else:

break

suffix = input("需要筛选的文件名后缀(Enter代表所有):")

fileNames = os.listdir()  #获取当前目录下的所有文件

for file in fileNames:

check = os.path.join(os.path.abspath('.'),file)

if os.path.isfile(check):

if len(suffix)==0 or suffix.isspace():

if keyword in file:

print(file," -> ",file.replace(keyword,''))

os.rename(file,file.replace(keyword,''))

else:

#用正则表达式匹配后缀名

if re.match('.+?\.'+suffix+'$',file) != None and keyword in file:

print(file," -> ",file.replace(keyword,''))

os.rename(file,file.replace(keyword,''))

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

2) 、一些不需要的、 巨大的文件或文件夹占据了硬盘的空间, 这并不少见。如果你试图释放计算机上的空间, 那么删除不想要的巨大文件效果最好。但首先你必须找到它们。编写一个程序, 遍历一个目录树, 查找特别大的文件或文件夹, 比方说, 超过100MB 的文件(回忆一下,要获得文件的大小,可以使用 os 模块的 os.path.getsize())。将这些文件的绝对路径打印到屏幕上。

3)、编写一个程序, 在一个文件夹中, 找到所有带指定前缀的文件, 诸如 spam001.txt,spam002.txt 等,并定位缺失的编号(例如存在 spam001.txt 和 spam003.txt, 但不存在 spam002.txt)。让该程序对所有后面的文件改名, 消除缺失的编号。作为附加的挑战,编写另一个程序,在一些连续编号的文件中,空出一些编号,以便加入新的文件。

到此这篇关于详解Python自动化之文件自动化处理的文章就介绍到这了,更多相关Python文件自动化处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Python自动化之文件自动化处理

本文链接: https://www.lsjlt.com/news/128715.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Python自动化之文件自动化处理
    一、生成随机的测验试卷文件 假如你是一位地理老师, 班上有 35 名学生, 你希望进行美国各州首府的一个小测验。不妙的是,班里有几个坏蛋, 你无法确信学生不会作弊。你希望随机调整问...
    99+
    2022-11-12
  • Python自动化办公之清理重复文件详解
    目录清理重复的文件清理重复文件的优化1清理重复文件的优化2清理重复文件的优化3批量修改文件名清理重复的文件 已知条件: 什么都不知道,只需要知道它是文件就可以了 实现方法: 可以从指...
    99+
    2022-11-11
  • Python实现自动化处理PDF文件的方法详解
    目录自动化处理PDF文件1. 批量合并PDF文件2. 批量拆分PDF文件3. 批量加密PDF文件4. 批量PDF添加水印完整代码自动化处理PDF文件 使用Python完成简单的PDF...
    99+
    2022-11-11
  • python自动化测试之Selenium详解
    目录1.安装2.基础操作2.1 声明浏览器对象2.2 访问网页2.3 查找单个节点2.4 查找多个节点3.等待3.1 显式等待3.2 隐式等待总结1.安装 完成自动化测试,需要配置三...
    99+
    2022-11-13
  • python自动化之re模块详解
    目录一、re是什么?二、re 模块的作用三、re模块的使用1、常用方法2、 元字符3、多字符匹配4、分组匹配5、match()方法的使用6、 search():在字符串中搜索,返回搜...
    99+
    2022-11-12
  • python实现自动化之文件合并
    假如公司需要统计每个员工的个人信息,制定好模板后,由员工填写,然后发送到综合部进行汇总,在这种情况下,如果公司有上百位员工的信息需要统计,且采用纯手工进行复制粘贴的方式进行汇总,则将是一项耗时费力易错的工作。本文主要...
    99+
    2022-06-02
    python 文件合并
  • Python接口自动化之文件上传/下载接口详解
    目录〇、前言一、文件上传接口1. 接口文档2. 代码实现二、文件下载接口1. 接口文档2. 代码实现总结〇、前言 文件上传/下载接口与普通接口类似,但是有细微的区别。 如果需要发送文...
    99+
    2022-11-13
  • Python自动化运维之异常处理
    1、异常异常就是非正常状态,在Python中使用异常对象来表示异常。若程序在编译或运行过程中发生错误,程序的执行过程就会发生改变,抛出异常对象,程序流进入异常处理。如果异常对象没有被处理或捕捉,程序就会执行回溯(Traceback)来终止程...
    99+
    2023-01-31
    异常 Python
  • Python实现自动化处理Word文档的方法详解
    目录1. 批量生成Word文档2. 将Word文档批量转换成PDF3. 在Word文档中批量标记关键词4. 在Word文档中批量替换关键词使用Python实现Word文档的自动化处理...
    99+
    2022-11-11
  • Python中怎么实现自动化处理文件
    Python中怎么实现自动化处理文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。遍历一个目录中的文件如果有如下多个数据需要读取和处理:├── data ...
    99+
    2023-06-15
  • Python自动化测试之异常处理机制实例详解
    目录一、前言二、异常处理合集2.1 异常处理讲解2.2 异常捕获2.3 异常捕获原理2.4 特定异常捕获2.5 异常捕获的处理2.6 except、Exception与BaseExc...
    99+
    2022-11-11
  • Python自动化办公之创建PPT文件
    目录PPT 的创建python-pptx 的安装生成一个空的 PPTpython-pptx 的9种布局从这一章开始,将进入 PPT 文件的自动化操作。关于 PPT 自动化操作所要实现...
    99+
    2022-11-11
  • Python自动化办公之群发邮件案例详解
    目录背景实现过程总结背景 想象一下,现在你有一份Word邀请函模板,然后你有一份客户列表,上面有客户的姓名、联系方式、邮箱等基本信息,然后你的老板现在需要替换邀请函模板中的姓名,然后...
    99+
    2022-11-13
  • Python接口自动化之cookie、session应用详解
    目录一、cookie1、cookie介绍2、cookie原理二、session1、session介绍2、session原理1. 存储位置不同:2. 存储容量不同:3. 存取方式不同:...
    99+
    2022-11-12
  • Python之Selenium自动化浏览器测试详解
    目录Python之Selenium(自动化浏览器测试)1.安装selenium2.下载对应版本的浏览器驱动3.测试code,打开一个网页,并获取网页的标题4.一个小样例总结Pytho...
    99+
    2022-11-13
  • python之自动化测试
    功能: 在ubuntu上面,通过shell脚本打开 VirtualBox(windows xp),并调用XP里面的python脚本,来打开一些windows上面的软件,并做模拟操作,完成之后关闭VirtualBox(windows xp)...
    99+
    2023-01-31
    测试 python
  • Python自动化办公之邮件发送全过程详解
    使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的时间。操作前配置(以较为复杂的QQ邮箱举例,其他邮箱操作类似) 单击设置-账号,滑倒下方协议处,开...
    99+
    2022-11-12
  • Python办公自动化SFTP详解
    目录前言一、sftp和ftp的区别是什么?二、使用步骤1.程序结构2.配置文件3.读入配置文件4.sftp_client.py5.email_client.py6.main.py总结...
    99+
    2022-11-11
  • Python 实战之ChatGPT + Python 实现全自动数据处理/可视化详解
     本文目录 一、引言 二、成果演示——口述式数据可视化 三、远原理述 四、实现过程   (一)环境配置   (二)申请OpenAI账号   (一)调用ChatGPT API   (二)设计AI身份,全自动处理数据 ...
    99+
    2023-09-07
    python chatgpt 信息可视化
  • Python办公自动化Word转Excel文件批量处理
    目录前言首先使用Python将Word文件导入row和cell解析所需内容内层解析循环前言 大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作