前言:
前幾天學(xué)姐拿來(lái)一堆文件名亂碼的pdf讓幫忙整理一下朱躺,按論文標(biāo)題命名
一看竟然一共250多個(gè)文件,還在不同的文件夾中焊刹,哇助隧,想想就頭疼唆香,這時(shí)候就要發(fā)揮程序媛的智慧了嫌变,正好最近在用python寫(xiě)畢設(shè),就想能不能用python改標(biāo)題躬它,噯腾啥,原來(lái)有專(zhuān)門(mén)的處理的庫(kù)pdfminer。好了閑話少說(shuō)冯吓,開(kāi)始干活
安裝pdfminer庫(kù)
在命令行輸入
pip install pdfminer3k
如果不成功會(huì)提示少了什么庫(kù)倘待,就按照pip install xx(庫(kù)名稱)的方式安裝就好,最后再在命令行輸入pip install pdfminer3k
把文件從文件夾中取出來(lái):
這個(gè)很簡(jiǎn)單组贺,直接貼代碼了
import os
import shutil
import importlib
import sys
def load_file():
walk = os.walk('./12')
i=1;
for root, dirs,files in walk:
for name in files:
shutil.move(os.path.join(root,name), "./myset/"+i+".pdf)
i+=1
load_file()
其中os.walk() 方法用于通過(guò)在目錄樹(shù)中游走輸出在目錄中的文件名凸舵,向上或者向下,是一個(gè)簡(jiǎn)單易用的文件失尖、目錄遍歷器
walk()方法語(yǔ)法格式如下:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
參數(shù)
top -- 遍歷的目錄的地址, 返回的是一個(gè)三元組(root,dirs,files)啊奄。
- root 所指的是當(dāng)前正在遍歷的這個(gè)文件夾的本身的地址
- dirs 是一個(gè) list 渐苏,內(nèi)容是該文件夾中所有的目錄的名字(不包括子目錄)
- files 同樣是 list , 內(nèi)容是該文件夾中所有的文件(不包括子目錄)
topdown--可選,為 True菇夸,先遍歷 top 目錄琼富,否則優(yōu)先遍歷 top 的子目錄(默認(rèn)為開(kāi)啟)。如果 topdown 參數(shù)為 True庄新,walk 會(huì)遍歷top文件夾鞠眉,與top 文件夾中每一個(gè)子目錄。
onerror-- 可選择诈, 需要一個(gè) callable 對(duì)象械蹋,當(dāng) walk 需要異常時(shí),會(huì)調(diào)用吭从。
followlinks -- 可選朝蜘, 如果為 True,則會(huì)遍歷目錄下的快捷方式(linux 下是 symbolic link)實(shí)際所指的目錄(默認(rèn)關(guān)閉)涩金。
詳情見(jiàn)http://www.runoob.com/python/os-walk.html
從pdf中讀標(biāo)題
1.分析PDF內(nèi)容
標(biāo)題在第二行和第三行一般谱醇,除極少數(shù)的標(biāo)題只有一行。
2.讀pdf獲取標(biāo)題
from urllib.request import urlopen
from pdfminer.pdfinterp import PDFResourceManager,process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
from io import open
def readPDF(pdffile):
rsrcmgr=PDFResourceManager()
retstr=StringIO()
laparams=LAParams()
device=TextConverter(rsrcmgr,retstr,laparams=laparams)
process_pdf(rsrcmgr,device,pdffile)
device.close()
content=retstr.getvalue()
retstr.close()
strs = str(content).split("\n")
title = strs[2]+strs[3]
return title
pdffile=open('./mysets/3.pdf',"rb")
title =readPDF(pdffile)
print(title)//
pdffile.close()
3.更改文件名:
def rename():
walk = os.walk('./mysets')
i = 0;
for root, dirs, files in walk:
for name in files:
pdffile=open(os.path.join(root, name),"rb")
title =readPDF(pdffile)
print(title)//
os.rename(os.path.join(root, name), os.path.join(root, title+".pdf”))
i += 1
好了這就將文件名給概率
雖然不能百分百處理好步做,有些特殊的情況還沒(méi)有考慮好副渴,但是已經(jīng)減少了很多工作量拉。
以后要多嘗試多做