实践永远是掌握一门技术的最佳方法。本文我将分享5个有趣且实用的Python脚本。新手可以跟着做,这将有助于你将理论应用于实践,并且帮助你快速掌握Python语法。通过你自己的努力创作出来的东西最后能产生实际作用,你也会有成就感,进一步提升你的兴趣和学习的欲望。
好了,话不多说,我们直接开始吧!
这个脚本将通过对 PIL、Matplotlib 以及 Numpy 几个库的运用,实现模糊老照片的恢复。这只是一个简单的示例代码,它执行基本的去噪和锐化操作。当然,在现在这个技术高速发达的时代,有很多便捷的工具可以实现这一目的,并且效果还会更好,比如机器学习和深度学习算法。因此,该脚本只是为了学习实践的目的。
import numpy as npimport matplotlib.pyplot as pltfrom PIL import Image, ImageFilter# 加载图片并将其转换为灰阶图像def load_image(image_path): img = Image.open(image_path) return img.convert('L')# 对图像进行去噪处理def denoise_image(image, weight=0.1): img_array = np.asarray(image, dtype=np.float32) out_array = img_array.copy() out_array[1:-1, 1:-1] = img_array[1:-1, 1:-1] * (1 - 4 * weight) + / (img_array[:-2, 1:-1] + img_array[2:, 1:-1] + img_array[1:-1, :-2] + img_array[1:-1, 2:]) * weight return Image.fromarray(np.uint8(out_array), 'L')# 对图像进行锐化处理def sharpen_image(image, radius=2, percent=150): return image.filter(ImageFilter.UnsharpMask(radius=radius, percent=percent, threshold=3))# 显示图片def display_image(image): plt.imshow(image, cmap='gray') plt.axis('off') plt.show() # 主程序def main(): # 替换成你自己的图像路径 image_path = r'material_sets/blurred_image.jpg' # 加载图像 image = load_image(image_path) # 图像去噪 denoised_image = denoise_image(image) # 图像锐化 sharpened_image = sharpen_image(denoised_image) # 显示原始图像 print(f'Original image: {display_image(image)}') # 显示处理后的图像 print(f'Processed image: {display_image(sharpened_image)}') if __name__ == '__main__': main()
图片
从实现效果来看几乎没有什么变化,不要在意结果,我们的目的是掌握实现过程。
以下是实现过程:
在这个脚本中,我们将使用Python自带的图形开发库 tkinter 创建一个简单的计算器,实现基本的加减乘除运算功能。
self.resut_value = tk.StringVar() self.resut_value.set('0') self.creat_widgets() def creat_widgets(self): # Result display result_entry = tk.Entry(self, textvariable=self.resut_value, font=('Arial', 24), bd=20, justify='right') result_entry.grid(row=0, column=0, columnspan=4, sticky='nsew') # Number buttons button_font = ('Arial', 14) button_bg = '#ccc' button_active_bg = '#aaa' buttons = [ '7', '8', '9', '4', '5', '6', '1', '2', '3', 'Clear', '0', 'Delete' ] row_val = 1 col_val = 0 for button in buttons: action = lambda x=button: self.on_button_click(x) tk.Button(self, text=button, font=button_font, bg=button_bg, activebackground=button_active_bg, command=action).grid(row=row_val, column=col_val, sticky='nsew') col_val += 1 if col_val > 2: col_val = 0 row_val += 1 # Operator buttons operators = ['+', '-', '*', '/', '='] for i, operator in enumerate(operators): action = lambda x=operator: self.on_operator_buttono_click(x) if operator == '=': tk.Button(self, text=operator, font=button_font, bg=button_bg, activebackground=button_active_bg, command=action).grid(row=i+1, column=0, columnspan=4, sticky='nsew') else: tk.Button(self, text=operator, font=button_font, bg=button_bg, activebackground=button_active_bg, command=action).grid(row=i+1, column=3, sticky='nsew') # Configure row and columns to resize with window for i in range(5): self.grid_rowconfigure(i, weight=1) for i in range(4): self.grid_columnconfigure(i, weight=1) def on_button_click(self, char): if char == 'Clear': self.resut_value.set('0') elif char == 'Delete': current_result = self.resut_value.get() if len(current_result) > 1: self.resut_value.set(current_result[:-1]) else: self.resut_value.set('0') else: current_result = self.resut_value.get() if current_result == '0': self.resut_value.set(char) else: self.resut_value.set(current_result + char) def on_operator_buttono_click(self, operator): if operator == '=': self.on_equal_butoon_click() else: current_result = self.resut_value.get() if current_result[-1] in '+-*/': self.resut_value.set(current_result[-1] + operator) else: self.resut_value.set(current_result + operator) def on_equal_butoon_click(self): try: resut = eval(self.resut_value.get()) self.resut_value.set(str(resut)) except ZeroDivisionError: self.resut_value.set('ZeroDivisionError!') except Exception as e: self.resut_value.set('Other Error!')
图片
该脚本可以将PDF的所有页面转换为图片(一页一张图)。此外,执行该脚本前,请确保已经安装了 PyMuPDF 库。如果未安装,请在终端窗口通过 pip install PyMuPDF 命令安装:
import osimport fitzif __name__ == '__main__': pdf_path = r'your/path/to/sample.pdf' doc = fitz.open(pdf_path) save_path = 'your/path/to/pdf-to-images' # Making it if the save_path is not exist. os.makedirs(save_path, exist_ok=True) for page in doc: pix = page.get_pixmap(alpha=False) pix.save(f'{save_path}/{page.number}.png') print('PDF convert to images successfully!')
同样地,请确保你的环境已安装了必要的库 pdf2docx。如果未安装,通过 pip install pdf2docx 命令安装即可。下面这个简单的示例脚本通过 pdf2docx 实现 PDF 转 Word 文档。请将输入和输出文件路径替换成你自己的。
from pdf2docx import Converterdef convert_pdf_to_word(input_pdf, output_docx): # Create a PDF converter object pdf_converter = Converter(input_pdf) # Convret the PDF to a docx file pdf_converter.convert(output_docx) # Close the converter to release resources pdf_converter.close() if __name__ == '__main__': input_pdf = r'material_sets/12-SQL-cheat-sheet.pdf' output_docx = r'material_sets/12-SQL-cheat-sheet.docx' convert_pdf_to_word(input_pdf, output_docx) print('The PDF file has been successfully converted to Word format!')
图片
原 PDF 文件:
图片
转换为 Word 文档:
图片
如果你细心观察的话,转换后,内容格式没有发生任何变化。Nice!
本文链接:http://www.28at.com/showinfo-26-96999-0.htmlPython自动化:适合新手练习的五个有趣又实用的Python脚本,帮你快速掌握编程技能!拿走不谢!
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 掌握这四种方法,多线程按序执行不再是问题
下一篇: 高并发场景下到底应该创建多少线程?