想必写毕设的时候,大家都会遇到一个问题,那就是得在明评版的论文里面插入一个独创性声明。就因为这个事情,我折腾了好久,各种在线网站都试过了,然而基本都需要充值或者会员啥的。(小声嚷嚷:“万恶的资本”)
害~一不做二不休,我干脆自己写个小工具好了。

一、代码分析

利用PyPDF2库便可轻松地对PDF文件进行处理,具体用法大家可以参考这里。首先是安装这个库:

pip install PyPDF2

定义输入和输出对象:

# 定义输出对象
outputName = 'output.pdf'
output = PdfFileWriter()
# 定义读取对象
thesisPDF = PdfFileReader(open(thesisName,'rb'))
insertPDF = PdfFileReader(open(insertName,'rb'))
N_page = thesisPDF.getNumPages()
pos = int(input('论文一共有"%d"页,请输入需要插入的位置:'%N_page))

分别读取论文的PDF和独创性声明的PDF,随后将声明插入到论文中的指定页面:

# 将声明插入到指定页面
for i in range(pos):
  output.addPage(thesisPDF.getPage(i))
output.addPage(insertPDF.getPage(0)) # 插入
for i in range(pos,N_page):
  output.addPage(thesisPDF.getPage(i)) 

将结果保存到本地:

# 保存插入后的结果
output.write(open(outputName,'wb'))

到这里,我们就已经成功的把声明插入到指定的页面中了。你没有看错,就是这么简单~

二、完整代码

将以上几部分整合起来,完整的代码如下:

# -*- coding: utf-8 -*-
"""
Created on Thu Nov 5 20:13:18 2020

@author: kimol_love
"""
import os
from PyPDF2 import PdfFileWriter, PdfFileReader

# 用户输入论文名
while True:
  thesisName = input('请输入论文的文件名:') 
  if not os.path.exists(thesisName):
    print('文件不存在,请重新输入!')
    continue
  if thesisName[-4:].lower() != '.pdf':
    print('后缀错误,请重新输入!')
    continue
  break

# 用户输入需要插入的页面
while True:
  insertName = input('请输入声明的文件名:') 
  if not os.path.exists(insertName):
    print('文件不存在,请重新输入!')
    continue
  if thesisName[-4:].lower() != '.pdf':
    print('后缀错误,请重新输入!')
    continue
  break

# 定义输出对象
outputName = 'output.pdf'
output = PdfFileWriter()

# 定义读取对象
thesisPDF = PdfFileReader(open(thesisName,'rb'))
insertPDF = PdfFileReader(open(insertName,'rb'))
N_page = thesisPDF.getNumPages()
pos = int(input('论文一共有"%d"页,请输入需要插入的位置:'%N_page))

# 将声明插入到指定页面
for i in range(pos):
  output.addPage(thesisPDF.getPage(i))
output.addPage(insertPDF.getPage(0)) # 插入
for i in range(pos,N_page):
  output.addPage(thesisPDF.getPage(i))  

# 保存插入后的结果
output.write(open(outputName,'wb'))
print('"%s"已经成功插入到"%s"的第%d页'%(insertName,thesisName,pos))  

运行效果如下:

打开生成的output.pdf,可以发现已经成功插入。

写在最后

最后,感谢各位大大的耐心阅读,咋们下次再会~

以上就是如何用python插入独创性声明的详细内容,更多关于用python插入独创性声明的资料请关注程序员的世界其它相关文章!

如何用python插入声明的更多相关文章

  1. Python魔法函数与两比特量子系统模拟

    结合Python的魔法函数特性,可以对类和类进行特殊的操作,从本质上说这也是一种模块化封装的手段。另一方面我们结合量子计算模拟这一实际科学问题,通过做一个简单的小项目,可以加深对Python魔法函数的理解。技术背景本文主要涵盖两个领域的知识点:python的魔法函数和量子计算模拟,我们可以通过一个实......

  2. Python解析JSON对象

    前言本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象。json处理模块的主要任务,是将一个JSON对象,转换成Python数据类型数据进行处理,或者反之,将Python数据类型数据,转换成JSON对象(字符串流),在不同的模块或者系统间传输。1. JSON数据格式特点对......

  3. python 爬取知乎回答下的微信8.0状态视频

    微信 8.0 版本更新后,可以设置个人状态,状态里面可以添加火录制视频,很快状态视频就火了,可以看下知乎热榜有没有微信8.0状态沙雕又可爱的视频或图片?[1]。比如我也设置了一个:于是我就想把这些视频下载下来,也玩一玩。本文讲述如何使用 Python 一键下载知乎某个回答下的所有视频。思路:分析知乎......

  4. Python 实现进度条的六种方式

    一、普通进度条示例代码import sysimport timedef progress_bar():for i in range(1, 101):print("\r", end="")print("Download progress: {}%: &......

  5. python基于tkinter制作无损音乐下载工具(附源码)

    继续写GUI,本次依然使用Tkinter设计一款图形界面,使用Tkinter做一款音乐下载软件,听起来听平常的,但是我这款软件能够下载 无损音乐下载软件,听起来不错吧,Let`s go!一.准备工作python Tkinter二.预览1.搜索2.下载3.结果无损音乐就这样下载完了。三.详细设计这里仅......

  6. 使用bandit对目标python代码进行安全函数扫描

    本文介绍了python安全危险函数扫描工具bandit的数种使用方法与技巧,同时也分析了bandit在实际项目中的性能表现,给予了读者是否在python开发项目中引入bandit的启发思考。技术背景在一些对python开源库代码的安全扫描中,我们有可能需要分析库中所使用到的函数是否会对代码的执行环境......

  7. python基于opencv实现人脸识别

    将opencv中haarcascade_frontalface_default.xml文件下载到本地,我们调用它辅助进行人脸识别。识别图像中的人脸#coding:utf-8import cv2 as cv# 读取原始图像img = cv.imread('face.png')# 调用熟悉的人脸分类器 ......

  8. python pandas合并Sheet,处理列乱序和出现Unnamed列的解决

    使用python中的pandas,xlrd,openpyxl库完成合并excel中指定sheet的操作# -*- coding: UTF-8 -*- import xlrdimport pandas as pdfrom pandas import DataFramefrom openpyxl imp......

  9. Python 学习笔记(1)

    Mac下载安装Pythonmac 系统自带有python 。但就最新的mac系统而言,它自带的python版本为2.*版本。虽然不影响对于老python项目的运行,但3.*版本中很多语法都发生了改变,为了方便后面的学习和使用还是最新版本会好一点1. 查看mac系统自带的pythonmac自带pyth......

  10. 如何编写python的daemon程序

    以前把守护进程与后台任务搞混了,后面看了文章才知道这两者的区别,写此文表达自己对守护进程的理解.1:什么是守护进程?所谓守护进程是一种是 Linux 的一种长期运行的后台服务进程,httpd、named、sshd 等服务都是以守护进程 Daemon 方式运行的,通常服务名称以字母d结尾,也就是 Da......

随机推荐

  1. 分别使用 Python 和 Math.Net 调用优化算法

    1. Rosenbrock 函数在数学最优化中,Rosenbrock 函数是一个用来测试最优化算法性能的非凸函数,由Howard Harry Rosenbrock 在 1960 年提出 。也称为 Rosenbrock 山谷或 Rosenbrock 香蕉函数,也简称为香蕉函数。Rosenbrock ......

  2. MySQL多版本并发控制——MVCC机制分析

    MVCC,即多版本并发控制(Multi-Version Concurrency Control)指的是,通过版本链维护一个数据的多个版本,使得读写操作没有冲突,可保证不同事务读写、写读操作并发执行,提高系统性能。实际上,innodb中“读已提交”和“可重复读”这两种隔离级别的事务在查询数据时访问版本......

  3. C语言之漫谈指针(下)

    C语言之漫谈指针(下)在上节我们讲到了一些关于指针的基础知识:详见:C语言之漫谈指针(上)本节大纲:零.小tips一.字符指针二.指针数组与数组指针三.数组传参与指针传参四.函数指针及函数指针数组五.回调函数六.例题讲解 零.小tips在正式开始下节之前,我们先来穿插两个小tips:1.打印函数......

  4. perl uc,lc,ucfirst,lcfirst大小写转换函数

    大小写字母转换:函数 uc (uppercase) 将所有的小写字母转成大写;函数 lc (lowercase) 将所有的大写字母转成小写;Perl提供了四个内置的函数类,从而能够轻松地改变字符和字的大小写。函数uc()会用大写返回其所有的参数,而lc()会用小写返回其参数。如果没有指定参数的话,u......

  5. MySQL 权限控制细节分析

    今天周天,早上懒了一会儿,起的有点儿晚,中午没事儿干,重新看了看MySQL里面的权限控制模块,再次回头看,还是有很多收获的细节,这里记录一下,方便自己后续查看。 关于权限部分的内容,之前3月11号的文章中有写过一些,今天的内容,我们使用一个一个的细节知识点来撰写(本文中所使用的My......

  6. JavaScript如何操作css

    原本应该是由css进行控制html中的div的宽高和背景颜色,但是在下方使用了JavaScript进行重新调用了div盒子,并且覆盖了css原本的属性内容。 需求目标:由 100 像素的粉色背景色的div盒子变成了 300像素的橘黄色效果的div盒子 代码如下: ......

  7. 初学者对finally的认知

    finally的用法及注意事项 必然执行的异常统一的处理出口通俗点来讲:无论是否发生异常,finally必然执行 : Finally: 1.finally作为异常处理的一部分,它一般用在try/catch语句中。2.网络编程,I/o处理,数据库操作等 ......

  8. 【数据库】Redis(2)--Redis的常用数据类型及命令

    1.Redis主要数据类型分类Redis中存储数据常用的数据类型主要有五种:String、List、Set、Sorted Set、Hash,这五种数据结构在Redis中存储数据的命令掌握对于我们后期在使用Java框架封装类操作Redis的API了解是非常重要的。所以在这里对这五种数据结构进行一一汇总......

  9. C# WinForm状态栏实时显示当前时间(窗体状态栏StatusStrip示例)

    本文主要介绍了C# WinForm状态栏实时显示当前时间(窗体状态栏StatusStrip示例),分享给大家,具体如下:实现效果:通过StatusStrip显示窗体状态栏,同时将状态栏分成三部分:居左边显示相关文字信息及时间信息,中间操作系统登录名,居右边显示本地IP。步骤:1.创建窗体及添加Sta......

  10. 如何查看python关键字

    现在我们就来讲讲关键字吧,准备好开始记笔记了吧,俗话说得好,好记性不如烂笔头,记好了喔,经常听大家提起关于Python中关键词有多少个?实际上Python中关键词目前有31个,想要具体查看以及观察个数的方式非常简单,下面就为大家详细介绍。1、keyword模块进行输出查看Help on module......