python - 以csv或xlsx格式输出多个PDF文件及其对应文本文件的大小

标签 python

我的计算机上有大约 500 个 PDF,我已经能够将它们转换为文本文件,并将其存储在单独的文件夹中。 我使用以下方法来获取 PDF 文件的大小:

import PyPDF2
import glob
from os import path
import os
from pathlib import *

statis =[]
base_path = Path("//File Path//PDFs")
pdf_files = list(base_path.glob('*.pdf'))
for f in pdf_files:
    statinfo = os.stat(f)
    size = statinfo.st_size
    statis.append(os.stat(f).st_size)  # this prints the size adding one by one, solve
    print(statis)

我有相应的文本文件,我已经做了与上面相同的操作。

我需要输出的是PDF文件的名称、文件的大小以及相应的csv格式文本文件的大小 我已尝试将输出打印到 csv,但还需要文本文件中的文件大小

最佳答案

您可以在包含文本文件的文件夹上使用 glob('*.txt') ,然后使用 zip() 创建对 (pdf, txt) 然后您可以获得它们的大小,将所有内容作为列表/元组放入 statis 中,然后全部写入 csv 中。为了确保我对名字进行排序。

import os
from pathlib import Path
import csv

statis = []

pdf_folder = Path("folder_with_pdfs")
txt_folder = Path("folder_with_txts")

pdf_files = sorted(pdf_folder.glob('*.pdf'))
txt_files = sorted(txt_folder.glob('*.txt'))

for (pdf, txt) in zip(pdf_files, txt_files):
    pdf_size = os.stat(pdf).st_size
    txt_size = os.stat(txt).st_size

    statis.append([pdf.name, txt.name, pdf_size, txt_size, pdf_size-txt_size])

    print(pdf.name, pdf_size)
    print(txt.name, txt_size)
    print('---')

with open('output.csv', 'w') as fp:
    csv_writer = csv.writer(fp)
    csv_writer.writerow(['pdf name', 'txt name', 'pdf size', 'txt size', 'size diff'])
    csv_writer.writerows(statis)

但是如果缺少文件就会出现问题。它将创建没有对应名称的对。最好获取 pdf 文件的名称并生成文本文件的路径。

import os
from pathlib import Path
import csv

statis = []

pdf_folder = Path("folder_with_pdfs")
txt_folder = Path("folder_with_txts")

pdf_files = pdf_folder.glob('*.pdf')

for pdf in pdf_files:
    txt = txt_folder / pdf.name.replace('.pdf', '.txt')

    if not txt.exists():
        print('[!] missing:', txt.name)
        continue

    pdf_size = os.stat(pdf).st_size
    txt_size = os.stat(txt).st_size

    statis.append([pdf.name,txt.name,pdf_size, txt_size, pdf_size-txt_size]])

    print(pdf.name, pdf_size)
    print(txt.name, txt_size)
    print('---')

with open('output.csv', 'w') as fp:
    csv_writer = csv.writer(fp)
    csv_writer.writerow(['pdf name', 'txt name', 'pdf size', 'txt size', 'size diff'])
    csv_writer.writerows(statis)

关于python - 以csv或xlsx格式输出多个PDF文件及其对应文本文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57447126/

相关文章:

python - 我应该如何使用临时数据库测试 db 服务模块?

python - 让Python程序运行另一个Python程序并让它们同时运行?

python - Django 为 FloatRangeField 指定小数位

python - 将curl命令转换为python请求时遇到问题

python - 键和列表的字典 - 如果列表中的任何值都为空,则删除键

python - 在没有 nohup + ps aux grep + kill 的情况下启动/停止后台 Python 进程

python - 回溯算法的时间复杂度说明

python - 如何检查 memcached 是否正在运行,如果不是从 python 启动它?

python - 如何使用for循环在切片中传递动态值

python - 如何使用python找出http和ssl版本