2012-10-22 199 views
-1

我在我的目錄中有一個由CSV文件組成的文件夾。我正在使用Python並通過代碼動態生成一些帶有數據的CSV文件。所以每次代碼運行時,CSV文件都會在名爲csv(例如)的文件夾中創建。如何將文件夾壓縮爲zip?

我已計劃此代碼通過cron作業每10天運行一次。因此,每10天運行一次Python代碼,並在csv文件夾中創建CSV文件。

現在我想用zip壓縮csv文件夾,並且希望以附件形式發送包含此ZIP文件的電子郵件。

  1. 是否可以壓縮CSV文件的文件夾到ZIP格式?
  2. 壓縮後,是否可以將此壓縮ZIP作爲電子郵件附件發送?

如果是這樣,任何人都可以請讓我知道如何做到這一點是否有可能通過Python做到上述的東西?或者我們可以通過linux命令來做到這一點?

+0

http://docs.python.org/library/zipfile.html –

回答

0

簡單的方法是運行一個單獨的cron作業做了壓縮和發送電子郵件:

zip -r - csv | uuencode | mail -s "csv zips for $(date)" [email protected]

如果你運行上面的cron作業,確保您cd到父目錄第一。所以,如果csv/home/foo/csv

cd /home/foo && zip -r csv | uuencode | mail -s "csv zips for $(date)" [email protected]

0
import zipfile 
import smtplib 

def archive_log(src, dst): 
    """ 
    Archiving log file to zip 
    """ 
    zip = zipfile.ZipFile(dst, 'w') 
    zip.write(src, os.path.basename(src), zipfile.ZIP_DEFLATED) 
    zip.close() 

def send_email_report2(self): 
    SEND_TO = ['[email protected]'] 
    SMTP_IP = '0.0.0.0' 

    msg = MIMEMultipart() 
    msg['From'] = '[email protected]' 
    msg['To'] = COMMASPACE.join(SEND_TO) 
    msg['Date'] = formatdate(localtime=True) 
    msg['Subject'] = 'Subject' 

    msg.attach(MIMEText('bodu text')) 

    for file_link in link_attachments: 
     part = MIMEBase('application', "octet-stream") 
     part.set_payload(open(file_link, "rb").read()) 
     Encoders.encode_base64(part) 
     part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file_link)) 
     msg.attach(part) 

    smtp = smtplib.SMTP(SMTP_IP) 
    smtp.sendmail('[email protected]', SEND_TO, msg.as_string()) 
    smtp.close() 
+0

,但在上面的代碼,其中archive_log功能和send_email_report2函數將被調用? –

+0

'archive_log('1.csv','1.zip') link_attachments = ['1.zip','2.zip'] send_email_report2()' – SWAPYAutomation

相關問題