Tôi muốn nén một thư mục và tất cả các thư mục con/tệp và gửi tệp zip dưới dạng tệp đính kèm. Điều gì sẽ là cách tốt nhất để đạt được điều này với Python?Tôi làm cách nào để nén một thư mục và gửi email tệp nén bằng Python?
7
A
Trả lời
20
Bạn có thể sử dụng các mô-đun zipfile để nén các tập tin bằng cách sử dụng tiêu chuẩn zip, các email mô-đun để tạo email có tệp đính kèm và mô-đun smtplib để gửi - tất cả chỉ sử dụng thư viện chuẩn.
Python - Pin Bao gồm
Nếu bạn không cảm thấy như lập trình và thà hỏi một câu hỏi về stackoverflow.org thay vào đó, hoặc (như đề xuất trong các ý kiến) rời đi tag homework
, tốt, ở đây nó là:
import smtplib
import zipfile
import tempfile
from email import encoders
from email.message import Message
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
def send_file_zipped(the_file, recipients, sender='[email protected]'):
zf = tempfile.TemporaryFile(prefix='mail', suffix='.zip')
zip = zipfile.ZipFile(zf, 'w')
zip.write(the_file)
zip.close()
zf.seek(0)
# Create the message
themsg = MIMEMultipart()
themsg['Subject'] = 'File %s' % the_file
themsg['To'] = ', '.join(recipients)
themsg['From'] = sender
themsg.preamble = 'I am not using a MIME-aware mail reader.\n'
msg = MIMEBase('application', 'zip')
msg.set_payload(zf.read())
encoders.encode_base64(msg)
msg.add_header('Content-Disposition', 'attachment',
filename=the_file + '.zip')
themsg.attach(msg)
themsg = themsg.as_string()
# send the message
smtp = smtplib.SMTP()
smtp.connect()
smtp.sendmail(sender, recipients, themsg)
smtp.close()
Với chức năng này, bạn chỉ có thể làm:
send_file_zipped('result.txt', ['[email protected]'])
bạn đang chào đón.
1
0
Các vấn đề liên quan
- 1. Làm cách nào để nén tệp bằng cấu trúc thư mục phẳng bằng Zipfile bằng Python?
- 2. Làm cách nào để nén thư mục bằng .NET?
- 3. Nén và giải nén các thư mục và tệp bằng cách sử dụng Java
- 4. Tạo Thư mục Nén (Nén) bằng Delphi
- 5. nén một thư mục
- 6. Tạo thư mục nén (hoặc nén)
- 7. Nén và giải nén thư mục trong C#
- 8. Làm cách nào để nén một thư mục tệp bằng C++?
- 9. SevenZipSharp - làm cách nào để nén nhiều thư mục vào một tệp đơn bằng C#?
- 10. Làm cách nào để gzip nén một chuỗi bằng Python?
- 11. Làm cách nào để nén nội dung của thư mục bằng python (phiên bản 2.5)?
- 12. Tôi làm cách nào để nén một thư mục thành grunt?
- 13. Cách nén và giải nén tệp?
- 14. Lệnh để nén thư mục bằng cách sử dụng thư mục cụ thể làm gốc
- 15. Cập nhật một tệp trong một tệp nén được nén
- 16. Nén một thư mục bằng cách sử dụng nén NTFS trong .NET
- 17. Java ZIP - cách giải nén thư mục?
- 18. Cách giải nén thư mục cụ thể từ tệp .zip bằng Python
- 19. Nén tệp nén zip
- 20. SharpZipLib: Nén một tệp đơn thành một tệp nén
- 21. Làm cách nào để giải nén tệp .gz bằng PHP?
- 22. Nén/giải nén các thư mục & tập tin
- 23. Nén thư mục chứa thư mục con
- 24. Cách nén tất cả các tệp trong thư mục
- 25. Làm cách nào để giải nén tệp bằng dòng lệnh?
- 26. Giải nén và lưu tệp bằng cách sử dụng as3?
- 27. Nén các tệp và thư mục trong android
- 28. Nén tệp bằng RAR
- 29. Làm cách nào để tạo tệp và sau đó nén/nén với Heroku?
- 30. Nén tệp lớn với python
Đó là một câu trả lời. –
Điều gì sẽ xảy ra nếu người hỏi rời khỏi thẻ bài tập về nhà? –
Vì bạn gặp rắc rối khi trả lời, hãy chỉnh sửa câu trả lời của bạn để thêm cây thư mục vào mã zip, không chỉ là một tệp duy nhất. – tzot