Files
jupyter/文件管理1.ipynb
T
2021-10-09 15:12:24 +08:00

440 lines
13 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "333a5431-a697-4330-a587-455d6d18ebb0",
"metadata": {},
"source": [
"# 文件管理"
]
},
{
"cell_type": "markdown",
"id": "bcd48bb6-4756-4748-ac8b-854eeee92a3b",
"metadata": {},
"source": [
"## 数字文件名转换为文本文件名"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "54b320e8-c3c1-4214-9a9e-db13c2558604",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import os,sys,shutil\n",
"import openpyxl\n",
"import math\n",
"\n",
"fi_xls = os.getcwd() + '/file/中国石油化工股份有限公司安庆炼化分公司员工在职人员名单.xlsx'\n",
"fi_path = os.getcwd() + '/file/210924'\n",
"old = []\n",
"dict1 = {}\n",
"\n",
"wb = openpyxl.load_workbook(fi_xls)\n",
"sheet = wb.active\n",
"depart = []\n",
"for n in range(2,sheet.max_row+1): \n",
" m_name = sheet.cell(n,1).value.strip()\n",
" m_depart = sheet.cell(n,5).value\n",
" if m_depart not in depart:\n",
" depart.append(sheet.cell(n,5).value)\n",
" dict1[int(m_name.split('.')[0])] = [sheet.cell(n,2).value.strip(),sheet.cell(n,5).value.strip()]\n",
" \n",
"# 创建部门办公室 \n",
"m_path = fi_path = os.getcwd()+'/file/210924/new'\n",
"for pn in depart:\n",
" if not os.path.exists(m_path + '/' + pn):\n",
" os.mkdir(m_path + '/' + pn)\n",
"fl=os.listdir(fi_path)\n",
"for fn in fl:\n",
" if os.path.isfile(fi_path + '/' + fn):\n",
" ofn = int(fn.split('.')[0])\n",
" old.append(ofn) \n",
"old.sort()\n",
"for n in old: \n",
" o_name = f'{fi_path}/{n}.pdf'\n",
" n_name = f'{fi_path}/new/{dict1[n][1]}/{dict1[n][0]}.pdf'\n",
" if not os.path.exists(n_name):\n",
" shutil.copyfile(o_name,n_name)\n",
" print(n_name)\n",
"#print(dict1)"
]
},
{
"cell_type": "markdown",
"id": "69712868-6786-430b-8591-f6828d781588",
"metadata": {},
"source": [
"## PDF文件压缩"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8492dc14-739e-4c78-a302-f4b57ae571dd",
"metadata": {},
"outputs": [],
"source": [
"import fitz\n",
"import os\n",
"\n",
"\n",
"def covert2pic(zoom):\n",
" if os.path.exists('.pdf'): # 临时文件,需为空\n",
" os.removedirs('.pdf')\n",
" os.mkdir('.pdf')\n",
" for pg in range(totaling):\n",
" page = doc[pg]\n",
" zoom = int(zoom) #值越大,分辨率越高,文件越清晰\n",
" rotate = int(0)\n",
" print(page)\n",
" trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)\n",
" pm = page.getPixmap(matrix=trans, alpha=False)\n",
" \n",
" lurl='.pdf/%s.jpg' % str(pg+1)\n",
" pm.writePNG(lurl)\n",
" doc.close()\n",
"\n",
"def pic2pdf(obj):\n",
" doc = fitz.open()\n",
" for pg in range(totaling):\n",
" img = '.pdf/%s.jpg' % str(pg+1)\n",
" imgdoc = fitz.open(img) # 打开图片\n",
" pdfbytes = imgdoc.convertToPDF() # 使用图片创建单页的 PDF\n",
" os.remove(img) \n",
" imgpdf = fitz.open(\"pdf\", pdfbytes)\n",
" doc.insertPDF(imgpdf) # 将当前页插入文档\n",
" if os.path.exists(obj): # 若文件存在先删除\n",
" os.remove(obj)\n",
" doc.save(obj) # 保存pdf文件\n",
" doc.close()\n",
"\n",
"\n",
"def pdfz(sor, obj, zoom): \n",
" covert2pic(zoom)\n",
" pic2pdf(obj)\n",
" \n",
"\n",
"\n",
"sor = \"5.pdf\" # 需要压缩的PDF文件\n",
"obj = \"new-\" + sor\n",
"doc = fitz.open(sor) \n",
"totaling = doc.pageCount\n",
"\n",
"zoom = 150 # 清晰度调节,缩放比率\n",
"pdfz(sor, obj, zoom)\n",
"os.removedirs('.pdf')\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "88d84849-5b98-48cb-86b1-e96757a8615f",
"metadata": {},
"outputs": [],
"source": [
"from pdf2image import convert_from_path, convert_from_bytes\n",
"import os,sys\n",
"import tempfile\n",
"from pdf2image.exceptions import (\n",
" PDFInfoNotInstalledError,\n",
" PDFPageCountError,\n",
" PDFSyntaxError\n",
")\n",
"#images = convert_from_path('1.pdf',dpi=200,fmt='jpg', output_folder='./sample_data')\n",
"with tempfile.TemporaryDirectory() as path:\n",
" images_from_path = convert_from_path('5.pdf', dpi=100,fmt='jpg', output_folder='./pic')\n",
"print(path)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "058a40ba-4948-4675-8400-e4c762e836ee",
"metadata": {},
"outputs": [],
"source": [
"import img2pdf \n",
"import os,sys\n",
"import glob\n",
"\n",
"fl=glob.glob('./pic/*.jpg')\n",
"fl.sort()\n",
"a4inpt = (img2pdf.mm_to_pt(210),img2pdf.mm_to_pt(297))\n",
"layout_fun = img2pdf.get_layout_fun(a4inpt)\n",
"with open(\"name.pdf\",\"wb\") as f:\n",
" f.write(img2pdf.convert(fl,layout_fun=layout_fun))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e997ad75-b2d9-43bf-a1de-8833cfe0cf6a",
"metadata": {},
"outputs": [],
"source": [
"import glob\n",
"import fitz # 导入本模块需安装pymupdf库\n",
"import os,sys\n",
"\n",
"def pic2pdf_1(img_path, pdf_path, pdf_name):\n",
" doc = fitz.open()\n",
" fl=os.listdir(img_path)\n",
" fl.sort()\n",
" width, height = fitz.PaperSize(\"a4\")\n",
" for img in fl:\n",
" fn = img_path+'/'+img\n",
" if os.path.isfile(fn):\n",
" imgdoc = fitz.open(img_path+'/'+img)\n",
" pdfbytes = imgdoc.convertToPDF()\n",
" imgpdf = fitz.open(\"pdf\", pdfbytes,width = width, height = height)\n",
" doc.insertPDF(imgpdf)\n",
" doc.save(pdf_path +'/'+ pdf_name)\n",
" doc.close()\n",
"\n",
"img_path = os.getcwd() +'/pic'\n",
"pdf_path = os.getcwd()\n",
"pic2pdf_1(img_path=img_path, pdf_path=pdf_path, pdf_name='1.pdf')"
]
},
{
"cell_type": "markdown",
"id": "1f38e4b6-ef20-4fef-801c-ff47951d2ad6",
"metadata": {},
"source": [
"## 图片文件扫描识别"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8c990b6a-7f8e-4527-a150-65f60bd131ac",
"metadata": {},
"outputs": [],
"source": [
"#将指定目录下图片文件进行文字识别\n",
"import os,sys\n",
"from aip import AipOcr\n",
"import glob\n",
"\n",
"\"\"\" 你的 APPID AK SK \"\"\"\n",
"APP_ID = '17553946'\n",
"API_KEY = 'IMC1ss3Tyo3vEAdVH6jgcdv2'\n",
"SECRET_KEY = 'Iua6KdhuDtz159rjzGeFGpqgjhnoU0zZ'\n",
"\n",
"client = AipOcr(APP_ID, API_KEY, SECRET_KEY)\n",
"def get_file_content(filePath):\n",
" with open(filePath, 'rb') as fp:\n",
" return fp.read()\n",
"\n",
"options = {}\n",
"options[\"language_type\"] = \"CHN_ENG\"\n",
"options[\"detect_direction\"] = \"true\"\n",
"options[\"detect_language\"] = \"true\"\n",
"options[\"probability\"] = \"true\"\n",
"\n",
"fi_path = os.getcwd()+'/pic'\n",
"fl = glob.glob(f'{fi_path}/*.jpg')\n",
"fl.sort()\n",
"for fl1 in fl:\n",
" file_name = fl1\n",
" image = get_file_content(file_name)\n",
" result= client.basicGeneral(image, options)\n",
" if 'words_result' in result:\n",
" print('\\n'.join([w['words'] for w in result['words_result']]))\n",
" print('\\n')\n",
" \n",
" "
]
},
{
"cell_type": "markdown",
"id": "d936ca99-269b-46f8-8582-fb02ed2cd3cc",
"metadata": {},
"source": [
"## word文档读取"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "d8043425-be9e-4e9e-bbfc-3a2d8885a860",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ok\n"
]
}
],
"source": [
"import docx\n",
"import json\n",
"Doc = docx.Document(r\"症状对症处方选穴.docx\")\n",
"#print(\"檔案內含段落數:\",len(Doc.paragraphs),\"\\n\")\n",
"testList = []\n",
"text1 = []\n",
"dict1 = {}\n",
"for text in Doc.paragraphs:\n",
" testList.append(text)\n",
"i = 0\n",
"for pg in testList:\n",
" \n",
" if len(pg.text) >0:\n",
" s = ''.join(pg.text.split()) \n",
" if s[0:1] == '第':\n",
" i += 1\n",
" n = 0\n",
" \n",
" dict1.setdefault(i,{})\n",
" dict1[i]['title'] = pg.text.split()[1]\n",
" dict1[i]['sub'] = {}\n",
" \n",
" #dict1[i]['title'].setdefault(i,{})\n",
" elif s[0:1] == '(':\n",
" sub = s.split(')')[1]\n",
" dict2 = {}\n",
" dict1[i]['sub'].setdefault(sub,[])\n",
" else:\n",
" dict1[i]['sub'][sub].append(s)\n",
"filename = '症状对症处方选穴.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl,ensure_ascii=False) \n",
"print('ok') "
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c440b599-9c80-4072-8543-d9c381214f1d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ok\n"
]
}
],
"source": [
"import docx\n",
"import json\n",
"Doc = docx.Document(r\"常见疾病辨病处方选穴.docx\")\n",
"#print(\"檔案內含段落數:\",len(Doc.paragraphs),\"\\n\")\n",
"testList = []\n",
"text1 = []\n",
"dict1 = {}\n",
"for text in Doc.paragraphs:\n",
" testList.append(text)\n",
"i = 0\n",
"for pg in testList:\n",
" \n",
" if len(pg.text) >0:\n",
" s = ''.join(pg.text.split()) \n",
" if s[0:1] == '第':\n",
" i += 1\n",
" n = 0\n",
" \n",
" dict1.setdefault(i,{})\n",
" dict1[i]['title'] = pg.text.split('节')[1]\n",
" dict1[i]['sub'] = {}\n",
" \n",
" #dict1[i]['title'].setdefault(i,{})\n",
" elif s[0:1] == '(':\n",
" sub = s.split(')')[1]\n",
" dict2 = {}\n",
" dict1[i]['sub'].setdefault(sub,[])\n",
" else:\n",
" dict1[i]['sub'][sub].append(s)\n",
"filename = '常见疾病辨病处方选穴.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict1, fl,ensure_ascii=False)\n",
"print('ok') "
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "b5e500b5-14d4-4417-8b5e-46df71a6b6b8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ok\n"
]
}
],
"source": [
"import json\n",
"import re\n",
"filename = '症状对症处方选穴.json'\n",
"pattern = r'[\\d\\.]'\n",
"mo =r'[\\u4e00-\\u9fa5]+'\n",
"dict2 = {}\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"for k,v in dict1.items():\n",
" m_title = v['title']\n",
" for k1,v1 in v['sub'].items():\n",
" sub_title = k1 \n",
" s = ''\n",
" for mx in v1: \n",
" s = s + mx\n",
" list1 = re.split(pattern, s)\n",
" list2 = []\n",
" for ss in list1:\n",
" if ss != '':\n",
" list3 = re.findall(mo,ss)\n",
" list2.append(list3)\n",
" \n",
" #print(m_title,sub_title,list2)\n",
" dict2.setdefault(m_title,{})\n",
" dict2[m_title][sub_title] = list2\n",
"filename = 'new_症状对症处方选穴.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict2, fl,ensure_ascii=False) \n",
"print('ok') \n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "eeea1429-e574-4d3b-88fd-0ddb3c090947",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}