Python의 메일 명령 - 01 명령줄 앱

우리는 파이썬으로 작은 메일 유틸리티를 작성할 것입니다. 목표는 동일한 플래그 세트로 메일 명령을 모방하는 것입니다. 그 이유는 html을 처리하기 위해 mail 명령을 얻으려는 시도가 골칫거리이고 메일 헤더를 수동으로 엉망으로 만드는 것과 관련이 있기 때문입니다. 파이썬을 사용하고 헤더 조작을 수행하는 것이 훨씬 낫습니다. 그러나 나는 또한 기존 스크립트를 다시 작성하고 싶지 않기 때문에 동일한 인터페이스를 유지하고 싶습니다!

첫 번째 단계는 필요한 플래그를 파악하는 것입니다.

대부분의 메일 명령은 다음과 같습니다.

> echo "Body" | mail -s "Subject" -c [email protected] -a /path/to/file/Intrcall.pdf -r [email protected] [email protected]


이메일 본문을 mail 명령으로 파이프한 다음 제목, 참조 주소를 설정하고 첨부 파일을 추가하고 발신 주소를 설정하고 마지막으로 대상을 설정합니다.

목표는 위의 명령에서 읽을 수 있고 mail 명령과 동일한 작업을 수행할 수 있는 Python 버전을 작성하는 것입니다.

시작하자!

argparse



Python에는 잘 작동하는 명령줄 인수를 처리하는 내장 라이브러리가 있습니다. 이 라이브러리에는 내가 좋아하지 않는 꽤 많은 마법이 있지만 결과는 스스로를 말해줍니다. 멋진 명령줄 프로그램을 시작하고 Python으로 매우 쉽게 실행할 수 있습니다.

실행할 첫 번째 코드 스니펫은 다음과 같습니다.

#!/usr/bin/env python3

import argparse

def main():
    parser = argparse.ArgumentParser()
    args = parser_args()

main()


이것은 우리가 실행하는 실행 파일이므로 .py 확장자 없이 저장할 수 있습니다. 프로그램 이름을 pymail로 지정했습니다. (아주 창의적인).

또한 env를 사용하여 python3을 참조하도록 shebang(#!)을 설정했습니다. 이것은 이 스크립트가 어디에서 실행될지, 어떤 버전의 Python이 있는지 또는 어디에 있을지 모르기 때문입니다. 이렇게 하면 연결된 python3이 무엇이든 이 스크립트를 실행하는 데 사용됩니다.

이제 프로그램을 실행 가능으로 표시해야 합니다.

> chmod +x pymail


이제 프로그램을 실행할 수 있습니다.

> ./pymail
>


짜잔! 우리는 아무것도 얻지 못한다! 다소 의외지만! 너무 많은 마법이 일어났습니다.

다음을 시도하십시오.

> ./pymail -h


아래 화면이 표시되어야 합니다. argparse 라이브러리를 사용하여 예쁜 도움말 텍스트를 얻고 첫 번째 플래그를 설정합니다.

usage: pymail [-h]

optional arguments:
  -h, --help  show this help message and exit


좀 더 설명적인 도움말 텍스트를 추가해 보겠습니다.

    parser = argparse.ArgumentParser(description="Mail replacement in python.")


이제 누군가가 도움을 요청할 때 설명이 인쇄됩니다.

> ./pymail -h
usage: pymail [-h]

Mail replacement in python.

optional arguments:
  -h, --help  show this help message and exit


또한 모든 플래그 뒤에 일부 텍스트를 인쇄하는 에필로그를 추가할 수도 있습니다.

    parser = argparse.ArgumentParser(description="Mail replacement in python", epilog="* not a meal replacement *")


다음과 같이 출력됩니다.

> ./pymail -h
usage: pymail [-h]

Mail replacement in python.

optional arguments:
  -h, --help  show this help message and exit

* not a meal replacement *


이제 argparse가 설정되었고 사용할 준비가 되었습니다. 다음 장에서는 메일 명령을 유용하게 만드는 모든 플래그를 추가할 것입니다!

좋은 웹페이지 즐겨찾기