Python文件处理

Excel

打开csv,去重,保存到excel

df = pd.read_csv("newhouse.csv",names=['name','xzqy','wylx',······,'state'])
df = df.drop_duplicates()
df.to_excel("newhouse.xlsx",index=False)

找到文件夹下所有csv文件,遍历读取并concat合并

from pathlib import Path
files = Path(r"D:\菜J学Python\数据分析\蛋壳公寓").glob("*.csv")
dfs = [pd.read_csv(f) for f in files]
df = pd.concat(dfs)
df.head()

文件目录

遍历当前目录下所有文件

import os
file_list = os.walk("./")
for dir_path,dirs,files in file_list:
    for f in files:
        file_path = os.path.join(dir_path,f) #重构文件路径
        print(file_path)

判断文件存在

path.exists(outfile)

拼接路径

path.join(outdir, os.path.basename(picfile))

PDF

PDF转Text

import pdfplumber
with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
	for i in range(75):
        page = p.pages[i]
        textdata = page.extract_text()
        data = open("text.text", "a")
        data.write(textdata)

PDF转Word

import pdfplumber
from docx import Document
with pdfplumber.open("研究.pdf") as p:
	page = p.pages[2]
    textdata = page.extract_text()
    document = Document()  #新建一个空白的word文档
    content = document.add_paragraph(textdata)  #在文档中添加正文段落,将变量textdata导进去
    document.save("word.docx")  #保存文档docx,命名为word

PDF提取表格

import pdfplumber
from openpyxl import Workbook
with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
	workbook = Workbook()  #新建空白Excel工作簿
    sheet = workbook.active  #激活sheet
    for i in range(68,75):  #遍历69页-75页
    page = p.pages[i]
    table = page.extract_table() #提取表格数据
    for row in table:  #遍历所有行
        sheet.append(row) #按行追加写入数据
        workbook.save("Excel.xlsx") #保存文件,命名为Excel
        i += 1
        print("第%d页PDF提取完成"%i) #提示提取进度

图片

调整原始图片大小

 def convertimg(picfile, outdir):
 	img = Image.open(picfile)
    width, height = img.size
    while (width * height > 4000000):  # 该数值压缩后的图片大约两百多k         width = width // 2   # '//'表示整数除法,例5//2=2
    	height = height // 2
        new_img = img.resize((width, height), Image.BILINEAR)   #重置图片大小和质量
        new_img.save(path.join(outdir, os.path.basename(picfile))) 

识别图片文本

  • 利用百度AI接口
# 利用百度api识别文本,并保存提取图片中的文字
def baiduOCR(picfile, outfile):
	filename = path.basename(picfile) #将图片路径赋值给filename
    APP_ID = '你的APP_ID'  # 刚才获取的 ID,下同
    API_KEY = '你的API_KEY'
    SECRECT_KEY = '你的SECRECT_KEY'
    client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)
    i = open(picfile, 'rb') #以二进制只读方式打开文件
    
	img = i.read()  #读取图片
    print("正在识别图片:\t" + filename)
    message = client.basicGeneral(img)  # 通用文字识别,每天50000次免费
    #message = client.basicAccurate(img)   # 通用文字高精度识别,每天500次免费
    i.close() #关闭文件

输出识别结果

 # 文本识别结果输出为txt
 with open(outfile, 'a+') as fo:
 	fo.writelines("+" * 60 + '\n')   #分隔线,60个+表示
    fo.writelines("识别图片:\t" + filename + "\n" * 2)  #正在识别的图片名,并空两行
    fo.writelines("文本内容:\n")
    # 输出文本内容
    for text in message.get('words_result'):  #words_result识别结果数组,类型为array[]
    	fo.writelines(text.get('words') + '\n')  #words识别结果字符串
        fo.writelines('\n' * 2)
        print("文本导出成功!")

遍历所有图片

import glob
for picfile in glob.glob("picture/*"):  #遍历原始图片存放的文件夹
	convertimg(picfile, outdir)  #调整原始图片
posted @   z5onk0  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示