第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創(chuàng)建python glob或列表,然后將文件從一個目錄保存到另一個目錄

創(chuàng)建python glob或列表,然后將文件從一個目錄保存到另一個目錄

狐的傳說 2022-09-13 17:51:53
我正在將文檔從pdf轉(zhuǎn)換為文本。pdf當(dāng)前位于一個文件夾中,然后在txt轉(zhuǎn)換后保存到另一個文件夾中。我有很多這樣的文檔,更喜歡迭代子文件夾并保存到txt文件夾中具有相同名稱的子文件夾,但在添加該層時遇到問題。我知道我可以使用glob以遞歸方式迭代,并對文件列表等執(zhí)行此操作。但不清楚如何將文件從這個保存到新文件夾。這不是完全必要的,但會更方便和高效。有沒有一個好方法可以做到這一點?import osimport iofrom pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom pdfminer.converter import TextConverterfrom pdfminer.layout import LAParamsfrom pdfminer.pdfpage import PDFPagedef convert(fname, pages=None):    if not pages:        pagenums = set()    else:        pagenums = set(pages)    output = io.StringIO()    manager = PDFResourceManager()    converter = TextConverter(manager, output, laparams=LAParams())    interpreter = PDFPageInterpreter(manager, converter)    infile = open(fname, 'rb')    for page in PDFPage.get_pages(infile, pagenums):        interpreter.process_page(page)    infile.close()    converter.close()    text = output.getvalue()    output.close    return text     print(text)def convertMultiple(pdfDir, txtDir):    if pdfDir == "": pdfDir = os.getcwd() + "\\" #if no pdfDir passed in     for pdf in os.listdir(pdfDir): #iterate through pdfs in pdf directory        fileExtension = pdf.split(".")[-1]        if fileExtension == "pdf":            pdfFilename = pdfDir + pdf             text = convert(pdfFilename)              textFilename = txtDir + pdf.split(".")[0] + ".txt"            textFile = open(textFilename, "w")              textFile.write(text)  pdfDir = r"C:/Users/Documents/pdf/"txtDir = r"C:/Users/Documents/txt/"convertMultiple(pdfDir, txtDir)   
查看完整描述

1 回答

?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗 獲得超4個贊

正如你所建議的,在這里工作得很好。它甚至可以僅過濾文件。glob.pdf


測試后取消注釋 3 行。


import os, glob


def convert_multiple(pdf_dir, txt_dir):

    if pdf_dir == "": pdf_dir = os.getcwd() # If no pdf_dir passed in 

    for filepath in glob.iglob(f"{pdf_dir}/**/*.pdf", recursive=True):

        text = convert(filepath)

        root, _ = os.path.splitext(filepath) # Remove extension

        txt_filepath = os.path.join(txt_dir, os.path.relpath(root, pdf_dir)) + ".txt"

        txt_filepath = os.path.normpath(txt_filepath) # Not really necessary

        print(txt_filepath)

#        os.makedirs(os.path.dirname(txt_filepath), exist_ok=True)

#        with open(txt_filepath, "wt") as f:

#            f.write(text)



pdf_dir = r"C:/Users/Documents/pdf/"

txt_dir = r"C:/Users/Documents/txt/"

convert_multiple(pdf_dir, txt_dir)   

若要確定新文件的文件路徑,請使用 os.path 模塊中的函數(shù)。.txt


os.path.relpath(filepath, pdf_dir)返回文件的文件路徑,包括與 相關(guān)的任何子目錄。pdf_dir


假設(shè)是:filepath


C:/Users/Documents/pdf/Setec Astronomy/employees.pdf


并且是pdf_dir


C:/Users/Documents/pdf/


它將返回,然后可以將其傳遞給 ,從而為我們提供了包含額外子目錄的完整文件路徑。Setec Astronomy/employees.pdfos.path.join()txt_dir


你可以這樣做,但你必須確保所有相應(yīng)的斜杠都在同一個方向上,并且沒有額外/缺失的前導(dǎo)/尾隨斜杠。txt_filepath = filepath.replace(filepath, pdf_dir)


在打開新文件之前,需要創(chuàng)建任何和所有子目錄。 調(diào)用以獲取文件目錄的文件路徑,并將其參數(shù)設(shè)置為 ,以在目錄已存在時禁止顯示異常。.txtos.path.dirname()os.makedirs()exist_okTrueFileExistsError


打開文件時使用語句以避免顯式調(diào)用 ,特別是在出現(xiàn)任何異常的情況下。with.txt.close()


查看完整回答
反對 回復(fù) 2022-09-13
  • 1 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號