{"id":4119,"date":"2021-01-18T11:11:49","date_gmt":"2021-01-18T02:11:49","guid":{"rendered":"\/blog\/?p=4119"},"modified":"2023-09-21T09:26:35","modified_gmt":"2023-09-21T00:26:35","slug":"%ec%9d%b4%eb%a9%94%ec%9d%bceml%ec%9d%84-mbox%eb%a1%9c-%eb%b3%80%ed%99%98-emltombox-py","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=4119","title":{"rendered":"[\uc774\uba54\uc77c]eml\uc744 mbox\ub85c \ubcc0\ud658 (emlToMbox.py)"},"content":{"rendered":"\n<pre class=\"wp-block-syntaxhighlighter-code\">#!\/usr\/bin\/python\n\n\"\"\" Converts a directory full of .eml files to a single Unix \"mbox\" file.\n\nAccepts as input either an individual .eml file or a directory containing one\nor more .eml files.\n\nThe output mbox will be created if it doesn't already exist.  If it exists,\nit will be appended to.  There is no checking for duplicates, so use caution.\nIf duplicate filtering is desired, it could be added to addFileToMbox().\nInspired by http:\/\/www.cosmicsoft.net\/emlxconvert.html\n\nUsage:\n$ .\/emlToMbox.py inputdir\/ output.mbox\n$ .\/emlToMbox.py input.eml output.mbox\n\nRequires Python 2.5 or later\n\nSTATUS:  Tested and appears to work.\n\"\"\"\n\nimport os\nimport sys\nimport mailbox\n\nglobal debug\ndebug = True\n\ndef main( arguments ):\n    infile_name = arguments[1]\n    dest_name = arguments[2]\n\n    if debug:\n        print \"Input is:  \" + infile_name\n        print \"Output is: \" + dest_name\n\n    dest_mbox = mailbox.mbox(dest_name, create=True) # if dest doesn't exist create it\n    dest_mbox.lock() # lock the mbox file\n\n    if os.path.isdir(infile_name):\n        if debug:\n            print \"Detected directory as input, using directory mode\"\n        count = 0\n        for filename in os.listdir(infile_name):\n            if filename.split('.')[-1] == \"eml\":\n                try:\n                    fi = open(os.path.join(infile_name, filename), 'r')\n                except:\n                    sys.stderr.write(\"Error while opening \" + filename + \"\\n\")\n                    dest_mbox.close()\n                    raise\n                addFileToMbox( fi, dest_mbox )\n                count += 1\n                fi.close()\n        if debug:\n            print \"Processed \" + str(count) + \" total files.\"\n\n    if infile_name.split('.')[-1] == \"eml\":\n        if debug:\n            print \"Detected .eml file as input, using single file mode\"\n        try:\n            fi = open(infile_name, 'r')\n        except:\n            sys.stderr.write(\"Error while opening \" + infile_name + \"\\n\")\n            dest_mbox.close()\n            raise\n        addFileToMbox( fi, dest_mbox )\n        fi.close()\n\n    dest_mbox.close() # close\/unlock the mbox file\n    return 0\n\ndef addFileToMbox( fi, dest_mbox ):\n    # Any additional preprocessing logic goes here, e.g. duplicate filter\n    try:\n        dest_mbox.add( fi )\n    except:\n        dest_mbox.close()\n        raise\n\nif __name__ == \"__main__\":\n    if len(sys.argv) != 3:\n        sys.stderr.write(\"Usage: .\/emlToMbox.py input outbox.mbox\\n\")\n        sys.exit(1)\n    sys.exit( main( sys.argv ) )<\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[22],"tags":[],"class_list":["post-4119","post","type-post","status-publish","format-standard","hentry","category-development_unix"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4119"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4119\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}