-1

私のディレクトリには、CSV ファイルで構成されるフォルダーがあります。私は Python を使用しており、コードを介して動的にデータを含むいくつかの CSV ファイルを生成しています。したがって、コードが実行されるたびに、CSV ファイルがcsv(たとえば) というフォルダーに作成されます。

cron ジョブを使用して、このコードを 10 日ごとに実行するようにスケジュールしました。したがって、10 日ごとに Python コードが実行され、CSV ファイルがcsvフォルダーに作成されます。

今、私はcsvフォルダを圧縮しzip、この ZIP ファイルを添付ファイルとして電子メールで送信したいと考えています。

  1. CSV ファイルを含むフォルダを ZIP 形式に圧縮することはできますか?
  2. 圧縮後、この圧縮されたZIPをメールに添付して送信することは可能ですか?

もしそうなら、誰でもそれを行う方法を教えてください。Pythonを介して上記のことを行うことは可能ですか? または、Linux コマンドを使用してこれを行うことができますか?

4

2 に答える 2

0

簡単な方法は、別のcronジョブを実行して、圧縮と電子メール送信を行うことです。

zip -r - csv | uuencode | mail -s "csv zips for $(date)" foo@bar.com

上記をcronジョブとして実行する場合は、cd最初に親ディレクトリに移動するようにしてください。だからもしそうcsvなら/home/foo/csv

cd /home/foo && zip -r csv | uuencode | mail -s "csv zips for $(date)" foo@bar.com

于 2012-10-22T05:25:59.070 に答える
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 = ['xxx@yyy.com']
    SMTP_IP = '0.0.0.0'

    msg = MIMEMultipart()
    msg['From'] = 'xxx@yyy'
    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('xxx1@yyy.com', SEND_TO, msg.as_string())
    smtp.close()
于 2012-10-22T08:46:29.810 に答える