开始编写Python程序之Python小工具:word转pdf、压缩文件、解压文件、jpg转png

1、下载Python编译器

  • PyCharm官网下载地址
  • 对于个人编程,下载免费版的Community即可

在这里插入图片描述

2、创建一个Python项目

  • Python的最佳实现是为每个项目创建virtualenv。
  • 为此,请展开Project Interpreter:New Virtualenv Environment节点,然后选择用于创建新虚拟环境的工具。
  • 现在选择Virtualenv工具,并指定用于新虚拟环境的位置和基本解释器。

在这里插入图片描述

  • 创建一个python file,就可以开启编程之旅了

在这里插入图片描述

在这里插入图片描述

添加/更换解释器

  • 有时,我们要使用一些库的资源,但是程序无法运行,可能是python解释器版本太高,这时,我们需要降低解释器版本。具体操作如下:

python解释器下载官网

  • 选择需要的版本进行下载

在这里插入图片描述
注:有一些版本时不持支下载的,需要再找其他版本下载

  • 支持下载版本的页面
    在这里插入图片描述
  • 不支持下载版本的页面
    在这里插入图片描述
  • 下载完成之后,双击运行安装
    在这里插入图片描述
  • 选择自定义安装,勾选add to PATH

在这里插入图片描述
在这里插入图片描述

点击安装,等待安装完成即可

  • 在编译器右下角进行解释器添加
    在这里插入图片描述

在这里插入图片描述

  • 右下角替换为所选版本解释器,即添加完成

在这里插入图片描述

3、牛刀小试:python开发几个小工具

  • 注:要在python 3.8环境下使用

在这里插入图片描述

工具功能
Jpg2Png.py将同目录下的jpg转换为png
Word2Pdf.py将同目录下的word文档转换为pdf
Compress.py将指定目录下的文件压缩为zip/7z
Decompress.py将当前目录下的zip/7z/rar解压

3.1、jpg转png

#####################################
#####################################
# @author leon
# @date 2023-06-26
# @description 将同目录下的jpg转换为png
#####################################
#####################################
import glob
import msvcrt
import os
from PIL import Image# 搜索当前文件夹中的jpg
jpg_files = glob.glob("*.jpg")
jpg_cnt = len(jpg_files)# 开始转换
if jpg_cnt > 0:print(f"当前文件夹有{jpg_cnt}张jpg")for jpg_file in jpg_files:jpg_name = os.path.basename(jpg_file)png_name = jpg_name.replace("jpg", "png")print(f"{jpg_name}  ------>  {png_name}\n")print("转换中, 请等待......")image = Image.open(jpg_name)image.save(png_name)print("转换完毕\n\n按下任意键结束")
else:print("当前文件夹中没有jpg\n")print("按下任意键结束")# 防止程序自行结束
msvcrt.getch()

3.2、Work2Pdf.py

########################################
########################################
# @author leon
# @date 2023-06-26
# @description 将同目录下的word文档转换为pdf
########################################
########################################
import glob
import msvcrt
import os
from docx2pdf import convert# 搜索当前文件夹中的docx/doc
word_files = glob.glob("*.docx") + glob.glob("*.doc")
word_cnt = len(word_files)# 开始转换
if word_cnt > 0:print(f"当前文件夹有{word_cnt}个word文档(docx/doc)")for word_file in word_files:word_name = os.path.basename(word_file)pdf_name = word_name.replace(".docx", ".pdf") if word_name.endswith(".docx") else word_name.replace(".doc", ".pdf")print(f"{word_name}  ------>  {pdf_name}\n")print("转换中, 请等待......")convert(word_name, pdf_name)print("转换完毕\n\n按下任意键结束")
else:print("当前文件夹中没有docx/doc文档\n")print("按下任意键结束")# 防止程序自行结束
msvcrt.getch()

3.3、Compress.py

########################################
########################################
# @author leon
# @date 2023-06-26
# @description 将指定目录下的文件压缩为zip/7z
########################################
########################################
import msvcrt
import zipfile
import py7zr
import osinput_folder_path = input("输入文件路径进行压缩: ")
input_compress_format = input("输入压缩格式(zip/7z): ")# 压缩为zip
def compress_zip(folder_path, compress_file_name):with zipfile.ZipFile(compress_file_name, 'w', zipfile.ZIP_DEFLATED) as zipf:for root, _, files in os.walk(folder_path):for file in files:file_path = os.path.join(root, file)print(f"compress --- {file_path}")zipf.write(file_path, os.path.relpath(file_path, folder_path))# 压缩为7z
def compress_7z(folder_path, compress_file_name):with py7zr.SevenZipFile(compress_file_name, 'w') as seven_z_f:for root, _, files in os.walk(folder_path):for file in files:file_path = os.path.join(root, file)print(f"compress --- {file_path}")seven_z_f.write(file_path, os.path.relpath(file_path, folder_path))# 开始压缩
if len(input_folder_path) > 0:if len(input_compress_format) > 0:if input_compress_format == "zip":zip_file_name = "compress_file.zip"print(f"{input_folder_path}中的文件被压缩至{zip_file_name}")print("压缩中, 请等待......")compress_zip(input_folder_path, zip_file_name)print("压缩完毕\n\n按下任意键结束")elif input_compress_format == "7z":seven_z_file_name = "compress_file.7z"print(f"{input_folder_path}中的文件被压缩至{seven_z_file_name}")print("压缩中, 请等待......")compress_7z(input_folder_path, seven_z_file_name)print("压缩完毕\n\n按下任意键结束")else:print("输入的不是zip或7z格式,无法压缩\n")print("按下任意键结束")# 防止程序自行结束
msvcrt.getch()

3.4、Decompress.py

########################################
########################################
# @author leon
# @date 2023-06-26
# @description 将当前目录下的zip/7z/rar解压
########################################
########################################
import glob
import msvcrt
import os
import zipfile
import rarfile
import py7zr# 解压zip
def decompress_zip(zip_file_name, decompress_file_name):with zipfile.ZipFile(zip_file_name, "r") as zip_ref:for file_info in zip_ref.infolist():# try:#     file_info.filename = file_info.filename.encode('cp437').decode('utf-8')#     # file_info.filename = unidecode(file_info.filename)# except UnicodeDecodeError:#     file_info.filename = file_info.filename.encode('cp437').decode('gbk')print(f"decompress --- {file_info.filename}")zip_ref.extract(file_info, decompress_file_name)# 解压7z
def decompress_7z(seven_z_file_name, decompress_file_name):with py7zr.SevenZipFile(seven_z_file_name, "r") as seven_z_archive:seven_z_archive.extractall(decompress_file_name)# files = seven_z_archive.list()# for file_info in files:#     file_name = file_info.filename#     print(f"decompress --- {file_name}")#     seven_z_archive.extract(decompress_file_name)# 解压rar
def decompress_rar(rar_file_name, decompress_file_name):with rarfile.RarFile(rar_file_name, "r") as rar_ref:for file_info in rar_ref.infolist():# try:#     file_info.filename = file_info.filename.encode('cp437').decode('utf-8')# except UnicodeDecodeError:#     file_info.filename = file_info.filename.encode('cp437').decode('gbk')print(f"decompress --- {file_info.filename}")rar_ref.extract(file_info, decompress_file_name)# 搜索当前文件中的zip/rar
compress_files = glob.glob("*.zip") + glob.glob("*.7z") + glob.glob("*.rar")
compress_cnt = len(compress_files)# 解压文件名
def get_decompress_name(temp_compress_name):if temp_compress_name.endswith(".zip"):return temp_compress_name.replace(".zip", "")elif temp_compress_name.endswith(".7z"):return temp_compress_name.replace(".7z", "")else:return temp_compress_name.replace(".rar", "")# 开始解压
if compress_cnt > 0:print(f"当前文件夹有{compress_cnt}个压缩文件(zip/rar/7z)")for compress_file in compress_files:compress_name = os.path.basename(compress_file)decompress_name = get_decompress_name(compress_name)print(f"{compress_name}  ------>  {decompress_name}")print("解压中, 请等待......")if compress_name.endswith(".zip"):# zipdecompress_zip(compress_name, decompress_name)print("解压完毕\n\n按下任意键结束")elif compress_name.endswith(".7z"):# 7zdecompress_7z(compress_name, decompress_name)print("解压完毕\n\n按下任意键结束")else:# rardecompress_rar(compress_name, decompress_name)# patoolib.extract_archive(compress_name, decompress_name)print("解压完毕\n\n按下任意键结束")
else:print("当前文件夹中没有zip/rar文档\n")print("按下任意键结束")# 防止程序自行结束
msvcrt.getch()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8953.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI视觉赢未来|深眸科技出席元宇宙装备展,“智与质”实现双重升级

6月29日,2023昆山元宇宙国际装备展在昆山国际会展中心圆满落幕,此次展会不仅为我们呈现最先进的元宇宙装备、最前沿的元宇宙技术、最潮流的元宇宙应用,还为工业元宇宙的发展蓄势赋能。 浙江深眸科技有限公司(以下简称深眸科技&am…

MATLAB基础篇(下)

本文为MATLAB基础篇(上)的后续。 二、 MATLAB基本语法 7、基本绘图方法 Ⅰ、 MATLAB绘图的一般步骤 对数轴进行采样对采样点计算相应的函数值, 得到平面(或空间)上的点的数据运用绘图命令将数据进行图形化显示 x-1:0.01:1; %对数轴进行采样ysin(1./x);…

MySQL数据库架构

MySql数据库架构 网络连接层:提供与mysql服务器建立连接的支持,负责连接管理、授权认证、安全等。 核心服务层:主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和查询缓存六个部分。 存储引擎层:负责Mysql中数据…

React V6实现类似与vue的eventBus

功能背景 想要实现类似于vue的eventBus的功能,由一个组件通知其他一个或多个组件。应用场景:比如一个可视化大屏的界面,当筛选条件变化的时候,要同时通知到大屏中所有图表一起变化。(当然使用store也是可以的&#xff…

【NX】NX二次开发设置对象高亮和颜色模板实现

在NX二次开发当中,我们经常需要高亮一个或者多个对象,或者设置对象的颜色方便实现,直接调用函数稍微显得麻烦,尤其是当我们需要处理的对象是容器的时候,于是我写了几个简单的模板实现,方便调试。 //author&…

docker 教程笔记,win11

1、如何执行container 当git clone一个带Dockerfile的项目时,先打开终端,跳转到该项目文件夹。 使用如下命令构建镜像image docker build -t project_name . 注: project_name为该项目名,后面必须要有空格和点。 执行完毕后&#…

mutate使用(日志过滤)

1.前言 mutate 过滤器是Logstash中的一个常用过滤器,用于对事件中的字段进行修改、重命名、删除和添加操作。它提供了多种操作选项,如替换字段值、添加新字段、删除字段、重命名字段等。mutate 过滤器可以在事件流水线的任何阶段使用,且不需…

vue 移动端开发vw适配方案rem适配方案 + vant框架 + unocss|tailwindcss

写在前面的话:看了这篇文章,有些东西名词啥的不懂的,或者有疑问的推荐百度,因为写的太多真的显得很啰嗦! 1.移动端开发适配 目前移动端适配,在市面上主流适配方案无非就两种,rem方案和vw方案。…

宏晶微 音频处理芯片 MS7124

MS7124是一款高性能24bit数字立体声音频DAC,该DAC采用Sigma-Delta结构,支持标准的I2S数字信号输入,输出支持立体声和单声道。

蓝桥杯专题-试题版-【九宫重排】【格子刷油漆】【回文数字】【国王的烦恼】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

【多种优化算法比较】混沌引力搜索算法(CGSA)(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

CentOS Linux MySQL 数据库 的安装方法

一、简单了解MySQL数据库的体系结构 (一)MySQL架构图 (二)MySQL体系结构:连接层、服务层、引擎层、存储层 1、连接层--主要职责:身份认证,连接管理,获取权限信息 (1&am…