어떻게 python 으로 첨부 파일 을 정리 합 니까?
목표.
현재 캡 처 와 유사 한 워드 는 600+입 니 다.간단하게 정리 하고 싶 습 니 다.
엑셀 을 내 비게 이 션(유사 디 렉 터 리)에 사용 할 수 있 습 니 다.엑셀 을 통 해 필요 한 첨부 파일 을 신속하게 찾 을 수 있 습 니 다.다음 그림 과 같 습 니 다.
구체 적 실현
목표 가 있 으 면 어떻게 실현 되 는 지 구체 적 으로 말 하고 생각 을 정리 하 는 것 이 비교적 간단 하 다.바로 모든 워드 파일 을 옮 겨 다 니 며 워드 의 관건 적 인 정 보 를 엑셀 에 얻 고 저장 하 는 것 이다.
여기에 주로 사용 되 는 모듈 을 열거 합 니 다:
import xlsxwriter
import subprocess
import os
import docx
import sys
import re
xlsxwriter 는 주로 엑셀 을 조작 하 는 데 사용 되 는데 xlsxwriter 는 쓰기 만 할 수 있 고 효율 적 으로 xlwt 보다 높 으 며 데이터 양 이 많 지 않 으 며 xlwt 로 도 ok.subprocess 는 주로 명령 행 을 호출 합 니 다.docx 모듈 에서 doc 의 워드 파일 을 처리 할 수 없 기 때문에 분석 하기 전에 doc 의 파일 을 docx 파일 로 변환 합 니 다.
os 는 주로 폴 더 를 옮 겨 다 니 며 파일 을 가 져 오 는 데 사 용 됩 니 다.
docx 는 주로 워드 문 서 를 해석 하 는 데 사 용 됩 니 다.
파일 이름 지정
우선,우 리 는 먼저 파일 이름 을 규범화 합 니 다.subprocess.call 호출 명령 을 사용 할 때 빈 칸,특수 기호 와 같은 의 미 를 바 꾸 지 못 해 오류 가 발생 했 기 때문에 아예 그 전에 이 잠재 적 인 문 제 를 제거 합 니 다.
def remove_doc_special_tag():
for filename in os.listdir(path):
otherName = re.sub("[\s+\!\/_,$%^*(+\"\')]+|[+――()?【】“”!,。?、~@#¥%……&*()]+", "",filename)
os.rename(os.path.join(path,filename),os.path.join(path,otherName))
파일 옮 겨 다 니 기그 후에 우 리 는 주 제 를 시작 하여 모든 파일 을 옮 겨 다 니 며 해석 할 수 있다.
path='/Users/cavin/Desktop/files'
for filename in os.listdir(path):
... ...
여기 서 문제 가 발생 했 습 니 다.먼저 docx 모듈 은 doc 의 워드 문 서 를 해석 할 수 없습니다.또한 mac 를 사용 하기 때문에 win32com 모듈 을 사용 할 수 없습니다.이 문 제 는 비교적 난처 합 니 다.나중에 google 은 명령 을 통 해 doc 를 docx 로 변환 할 수 있다 는 것 을 알 게 되 었 습 니 다.변 환 된 docx 파일 스타일 을 잃 어 버 렸 지만 텍스트 정 보 를 얻 는 데 영향 을 주지 않 습 니 다.
그래서 이 코드 가 생 겼 습 니 다.doc 파일 이 라면 docx 로 우선 변환 하고 분석 이 끝 난 후에 제거 합 니 다.
if filename.endswith('.doc'):
subprocess.call('textutil -convert docx {0}'.format(fullname),shell=True)
fullname=fullname[:-4]+".docx"
sheetModel= etl_word_files(fullname)#
subprocess.call('rm {0}'.format(fullname),shell=True) #
워드 파일 분석다음은 파일 을 분석 하 는 것 입 니 다.docx 모듈 을 통 해 쉽게 이 루어 집 니 다.구체 적 인 해석 논 리 는 붙 이지 않 습 니 다.바로 모든 줄 을 옮 겨 다 니 며 키워드,기호 에 따라 데 이 터 를 캡 처 하 는 것 입 니 다.(이력서 형식 마다 차이 가 많 지 않 습 니 다)
doc = docx.Document(fullname)
for para in doc.paragraphs:
print(para.text)
... ...
충전 엑셀분석 한 데 이 터 는 엑셀 을 직접 채 울 수 있 습 니 다.
workbook = xlsxwriter.Workbook('report_list.xlsx')
worksheet = workbook.add_worksheet('list')
worksheet.write(0,0, ' ')
worksheet.write(0,1, ' ')
worksheet.write(0,2, ' ')
worksheet.write(0,3, ' ')
worksheet.write(0,4, ' ')
worksheet.write(0,5, ' ')
worksheet.write(0,6, ' ')
worksheet.write(0,7, ' ')
worksheet.write(0,8, ' ')
worksheet.write(0,9, ' ')
worksheet.write(0,10, ' ')
여기 서 주로 문서 링크 의 채 움 을 말 합 니 다.다른 사람 에 게 주어 야 하기 때문에 첨부 파일 과 엑셀 이 같은 폴 더 에서 상대 적 인 경로 로 이 루어 질 수 있 도록 하기 만 하면 엑셀 함수 HYPERLINK 를 사용 할 수 있 습 니 다.
worksheet.write(index,10, '=HYPERLINK(\"./'+filename+'\",\" \")')
문제 점여기까지 하면 기본적으로 해당 하 는 기능 을 실현 할 수 있 지만 완벽 하지 않 습 니 다.주로 워드 의 형식 이 기준 에 맞지 않 고 제 가 원 하 는 데 이 터 를 정확하게 얻 을 수 있 는 좋 은 방법 이 없 지만 주요 성명 학교 와 같은 대부분 을 잡 았 고 임 무 를 줄 인 셈 입 니 다.
총결산
python 을 이용 해 어느 정도 중복 노동 을 줄 였 지만 기준 에 맞지 않 는 동 동 에 게 는 아직 좋 은 방법 이 없 는 것 같다.
비록 논 리 를 늘 려 이런 기준 을 호 환 할 수 있 지만,분명히 이 지불 과 생산 은 정비례 가 되 지 않 는 다.
좋 은 손 에 있 는 도 구 를 이용 하여 효율 을 높이 는 것 이 사실 입 니 다.바보 같은 중복 작업 인지 코드 를 통 해 중복 노동 을 줄 이 는 지 는 당신 이 어떻게 생각 하 는 지 에 달 려 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.