.msgファイルから添付ファイルを抽出しようとしています。 github上のソリューションは、私が正しく理解するにはあまりにも詳細であり、ここの答えは私が望むほど完全ではありません。このexampleは私のような別の質問で指摘されましたが、私はその機能の仕組みを理解することができませんでした。私はここでライン20に貼り付けられています19.1.14 email:例 - 第5例の問題
import os
import sys
import email
import errno
import mimetypes
from argparse import ArgumentParser
def main():
parser = ArgumentParser(description = """\
Unpack a MIME message into a directory of files.
""")
parser.add_argument('-d', '-- C:\\Users\\MikeS\\Documents\\ImproveBKFS\\Python\\msg_extract', required = True,
help = """Unpack the MIME message into the named
directory, which will be created if it doesn't already
exist.""")
parser.add_argument('TestFile.msg')
args = parser.parse_args()
with open(args, 'wb') as fp: #issues with open(args)
msg = email.message_from_file(fp)
try:
os.mkdir(args.directory)
except FileExistsError:
pass
counter = 1
for part in msg.walk():
#multipar/* are just containers
if part.get_content_maintype()=='multipart':
continue
#Applications should really sanitize the given filename so that an
# email message can't be used to overwrite important files
filename = part.get_filename()
if not filename:
ext = mimetypes.guess_extension(part.get_content_type())
if not ext:
#Use a generic bag-of-bit extension
ext = '.bin'
filename = 'part-%03d%' % (counter, ext)
counter +=1
with open(os.path.join(arg.directory, filename), 'wb') as fp:
fp.write(part.get_payload(decode=True))
if __name__ == '__main__':
main()
:ここでは、これまで私のコードは次のとおりです。オープン(MSGFILE)とFPとして -
は、私は近くにいますが、それは私が開くことshoudが何であるかを把握することはできませんと信じて私の入力とエラーのメッセージです。
PS C:\Users\MikeS\Documents\\Python\msg_extract> py -3 get_payload_3.py -d ^V TestFile.msg
Namespace(C:\Users\MikeS\Documents\Python\msg_extract='\x16', TestFile.msg='TestFile.msg')
Traceback (most recent call last):
File "get_payload_3.py", line 53, in <module>
main()
File "get_payload_3.py", line 26, in main
with open(args) as fp: #something with this line
TypeError: invalid file: Namespace(C:\Users\MikeS\Documents\Python\msg_extract='\x16', TestFile.msg='Test
File.msg')
私がこの機能を提供するために必要な入力のタイプや手掛かりは、大きな助けになります。ありがとう
ありがとう、私はpython.orgのargparseのドキュメントを見てきましたが、このインスタンスでこれを使用する方法は少し混乱していましたが、コードを分割することでより完全に消化することができました。 – Mwspencer