어떻게 python 으로 첨부 파일 을 정리 합 니까?

4184 단어 python첨부 파일
현재 제 폴 더 에는 500 여 개의 이력서 가 있 습 니 다.만약 에 제 가 학교,학력 등 정 보 를 알 고 싶다 면 저 는 모든 워드 를 열 어서 확인 해 야 합 니 다.시간 이 너무 걸 립 니 다.이 럴 때 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 을 이용 해 어느 정도 중복 노동 을 줄 였 지만 기준 에 맞지 않 는 동 동 에 게 는 아직 좋 은 방법 이 없 는 것 같다.
비록 논 리 를 늘 려 이런 기준 을 호 환 할 수 있 지만,분명히 이 지불 과 생산 은 정비례 가 되 지 않 는 다.
좋 은 손 에 있 는 도 구 를 이용 하여 효율 을 높이 는 것 이 사실 입 니 다.바보 같은 중복 작업 인지 코드 를 통 해 중복 노동 을 줄 이 는 지 는 당신 이 어떻게 생각 하 는 지 에 달 려 있 습 니 다.

좋은 웹페이지 즐겨찾기