1. 程式人生 > >Python 批量修改PDF檔名

Python 批量修改PDF檔名

參加CyberC會議,會議的論文集檔名全是字母+數字,找自己想看的很難受,就用python改了下。

環境說明:

(1)python3.6

(2)PyPDF2庫(直接pip安裝就行)

(3)檔案的結構說明,如下圖:

程式碼如下:

import os
from PyPDF2 import PdfFileWriter, PdfFileReader
from shutil import copy2

src_dir = 'F:\CyberC文獻\CyberC2018'  # 原始檔目錄地址
des_dir = 'F:\CyberC文獻\CyberC2018-txt'  # 新檔案目錄地址
num = 0

def list_all_files(rootdir):
    import os
    _files = []
    list = os.listdir(rootdir) #列出資料夾下所有的目錄與檔案
    for i in range(0,len(list)):
           path = os.path.join(rootdir,list[i])
           if os.path.isdir(path):
              _files.extend(list_all_files(path))
           if os.path.isfile(path):
              _files.append(path)
    return _files

if not os.path.exists(des_dir):  # 如果沒有目標資料夾,新建一個目標資料夾進行儲存
    os.makedirs(des_dir)

if os.path.exists(src_dir):
    files = list_all_files(src_dir)  # 獲取原始檔的目錄地址
    for file in files:  # 對於目錄下的每一個檔案
        pdf_reader = PdfFileReader(open(file, 'rb'))  # 開啟並建立一個PDF檔案物件
        paper_title = pdf_reader.getDocumentInfo().title  # 獲取PDF標題
        print("num : %s" % num, paper_title)  # 顯示處理到第幾個檔案
        num += 1
        paper_title = str(paper_title)  # 標題字元化

        if paper_title.find('/') != -1:  # 對於'/'無法寫入檔名的情況,將其用'_'代替
            new_paper_title = paper_title.replace('/', '_')
            paper_title = new_paper_title
            copy2(file, os.path.join(des_dir, paper_title) + '.pdf')
        else:
            copy2(file, os.path.join(des_dir, paper_title) + '.pdf')

else:
    print("該路徑下不存在所查詢的目錄!")