{"id":2895,"date":"2024-11-16T20:36:35","date_gmt":"2024-11-16T12:36:35","guid":{"rendered":"http:\/\/viplao.com\/?p=2895"},"modified":"2024-11-16T20:36:49","modified_gmt":"2024-11-16T12:36:49","slug":"python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac","status":"publish","type":"post","link":"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/","title":{"rendered":"PYTHON\u57fa\u7840\u6280\u80fd \u2013\u00a0Python\u81ea\u52a8\u5316\u529e\u516c\u768414\u4e2a\u5b9e\u7528\u811a\u672c"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_71 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u6587\u7ae0\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#%E5%BC%95%E8%A8%80\" title=\"\u5f15\u8a00\">\u5f15\u8a00<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#1_%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D\" title=\"1. \u6587\u672c\u6587\u4ef6\u6279\u91cf\u91cd\u547d\u540d\">1. \u6587\u672c\u6587\u4ef6\u6279\u91cf\u91cd\u547d\u540d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#2_Excel%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97\" title=\"2. Excel\u6570\u636e\u6e05\u6d17\">2. Excel\u6570\u636e\u6e05\u6d17<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#3_PDF%E5%90%88%E5%B9%B6%E5%99%A8\" title=\"3. PDF\u5408\u5e76\u5668\">3. PDF\u5408\u5e76\u5668<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#4_%E5%9B%BE%E7%89%87%E5%8E%8B%E7%BC%A9%E5%B7%A5%E5%85%B7\" title=\"4. \u56fe\u7247\u538b\u7f29\u5de5\u5177\">4. \u56fe\u7247\u538b\u7f29\u5de5\u5177<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#5_%E6%96%87%E6%9C%AC%E5%86%85%E5%AE%B9%E6%9B%BF%E6%8D%A2\" title=\"5. \u6587\u672c\u5185\u5bb9\u66ff\u6362\">5. \u6587\u672c\u5185\u5bb9\u66ff\u6362<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#6_%E6%95%B0%E6%8D%AE%E6%8A%93%E5%8F%96%E4%B8%8E%E8%A7%A3%E6%9E%90\" title=\"6. \u6570\u636e\u6293\u53d6\u4e0e\u89e3\u6790\">6. \u6570\u636e\u6293\u53d6\u4e0e\u89e3\u6790<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#7_%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%87%BA%E5%88%B0CSV\" title=\"7. \u6570\u636e\u5bfc\u51fa\u5230CSV\">7. \u6570\u636e\u5bfc\u51fa\u5230CSV<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#8_%E9%82%AE%E4%BB%B6%E8%87%AA%E5%8A%A8%E5%8F%91%E9%80%81\" title=\"8. \u90ae\u4ef6\u81ea\u52a8\u53d1\u9001\">8. \u90ae\u4ef6\u81ea\u52a8\u53d1\u9001<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#9_%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9B%91%E6%8E%A7%E4%B8%8E%E5%90%8C%E6%AD%A5\" title=\"9. \u6587\u4ef6\u5939\u76d1\u63a7\u4e0e\u540c\u6b65\">9. \u6587\u4ef6\u5939\u76d1\u63a7\u4e0e\u540c\u6b65<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#10_%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C\" title=\"10. \u6570\u636e\u5e93\u64cd\u4f5c\">10. \u6570\u636e\u5e93\u64cd\u4f5c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#11_%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95\" title=\"11. \u65e5\u5fd7\u8bb0\u5f55\">11. \u65e5\u5fd7\u8bb0\u5f55<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#12_%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96\" title=\"12. \u6570\u636e\u53ef\u89c6\u5316\">12. \u6570\u636e\u53ef\u89c6\u5316<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#13_PDF%E6%8B%86%E5%88%86%E5%99%A8\" title=\"13. PDF\u62c6\u5206\u5668\">13. PDF\u62c6\u5206\u5668<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/#14_%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B%EF%BC%9A%E8%87%AA%E5%8A%A8%E5%8C%96%E6%8A%A5%E8%A1%A8%E7%94%9F%E6%88%90\" title=\"14. \u5b9e\u6218\u6848\u4f8b\uff1a\u81ea\u52a8\u5316\u62a5\u8868\u751f\u6210\">14. \u5b9e\u6218\u6848\u4f8b\uff1a\u81ea\u52a8\u5316\u62a5\u8868\u751f\u6210<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%BC%95%E8%A8%80\"><\/span><strong>\u5f15\u8a00<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5728\u65e5\u5e38\u5de5\u4f5c\u4e2d\uff0c\u91cd\u590d\u6027\u7684\u4efb\u52a1\u4e0d\u4ec5\u8017\u65f6\uff0c\u8fd8\u5bb9\u6613\u51fa\u9519\u3002Python\u51ed\u501f\u5176\u7b80\u6d01\u6613\u5b66\u7684\u8bed\u6cd5\uff0c\u6210\u4e3a\u8bb8\u591a\u529e\u516c\u5ba4\u81ea\u52a8\u5316\u4efb\u52a1\u7684\u9996\u9009\u5de5\u5177\u3002\u4eca\u5929\uff0c\u6211\u4eec\u5c31\u4e00\u8d77\u6765\u770b\u770b\u5982\u4f55\u7528Python\u7f16\u5199\u4e00\u4e9b\u5b9e\u7528\u7684\u5c0f\u811a\u672c\uff0c\u63d0\u9ad8\u5de5\u4f5c\u6548\u7387\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D\"><\/span><strong>1. \u6587\u672c\u6587\u4ef6\u6279\u91cf\u91cd\u547d\u540d<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5728\u6574\u7406\u6587\u6863\u65f6\uff0c\u7ecf\u5e38\u9700\u8981\u5bf9\u5927\u91cf\u6587\u4ef6\u8fdb\u884c\u91cd\u547d\u540d\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u811a\u672c\uff0c\u5e2e\u52a9\u4f60\u6279\u91cf\u5904\u7406\u8fd9\u4e9b\u4efb\u52a1\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;os<br><br>def&nbsp;rename_files(directory,&nbsp;prefix=\"\"):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u6279\u91cf\u91cd\u547d\u540d\u6307\u5b9a\u76ee\u5f55\u4e0b\u7684\u6240\u6709\u6587\u4ef6\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;directory:&nbsp;\u8981\u5904\u7406\u7684\u6587\u4ef6\u5939\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;prefix:&nbsp;\u6587\u4ef6\u7684\u65b0\u524d\u7f00\uff0c\u9ed8\u8ba4\u4e3a\u7a7a\u5b57\u7b26\u4e32<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u904d\u5386\u6307\u5b9a\u76ee\u5f55\u4e0b\u7684\u6240\u6709\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;filename&nbsp;in&nbsp;os.listdir(directory):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u83b7\u53d6\u6587\u4ef6\u540d\u548c\u6269\u5c55\u540d<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_base,&nbsp;file_ext&nbsp;=&nbsp;os.path.splitext(filename)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u751f\u6210\u65b0\u6587\u4ef6\u540d<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_filename&nbsp;=&nbsp;f\"{prefix}{file_base}{file_ext}\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u62fc\u63a5\u5b8c\u6574\u8def\u5f84<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old_path&nbsp;=&nbsp;os.path.join(directory,&nbsp;filename)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_path&nbsp;=&nbsp;os.path.join(directory,&nbsp;new_filename)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u91cd\u547d\u540d\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.rename(old_path,&nbsp;new_path)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Renamed&nbsp;'{filename}'&nbsp;to&nbsp;'{new_filename}'\")<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>rename_files(\"path\/to\/your\/directory\",&nbsp;\"New_\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Renamed&nbsp;'old_file.txt'&nbsp;to&nbsp;'New_old_file.txt'<br>Renamed&nbsp;'another_file.docx'&nbsp;to&nbsp;'New_another_file.docx'<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Excel%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97\"><\/span><strong>2. Excel\u6570\u636e\u6e05\u6d17<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Excel\u8868\u4e2d\u7684\u6570\u636e\u7ecf\u5e38\u9700\u8981\u6e05\u7406\u624d\u80fd\u8fdb\u4e00\u6b65\u5206\u6790\u3002\u8fd9\u4e2a\u811a\u672c\u53ef\u4ee5\u5e2e\u52a9\u4f60\u5220\u9664\u7a7a\u884c\u3001\u683c\u5f0f\u5316\u65e5\u671f\u7b49\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;pandas&nbsp;as&nbsp;pd<br><br>def&nbsp;clean_excel(file_path):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u6e05\u6d17Excel\u8868\u683c\u4e2d\u7684\u6570\u636e\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;file_path:&nbsp;Excel\u6587\u4ef6\u7684\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u8bfb\u53d6Excel\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;df&nbsp;=&nbsp;pd.read_excel(file_path)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5220\u9664\u7a7a\u884c<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;df.dropna(inplace=True)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u683c\u5f0f\u5316\u65e5\u671f\u5217\uff08\u5047\u8bbe\u65e5\u671f\u5217\u540d\u4e3a'Date'\uff09<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;'Date'&nbsp;in&nbsp;df.columns:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df&#91;'Date']&nbsp;=&nbsp;pd.to_datetime(df&#91;'Date'],&nbsp;format='%Y-%m-%d')<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u4fdd\u5b58\u4fee\u6539\u540e\u7684\u6570\u636e<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;df.to_excel(file_path,&nbsp;index=False)<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Data&nbsp;cleaned&nbsp;and&nbsp;saved&nbsp;to&nbsp;{file_path}\")<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>clean_excel(\"path\/to\/your\/excel\/file.xlsx\")<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_PDF%E5%90%88%E5%B9%B6%E5%99%A8\"><\/span><strong>3. PDF\u5408\u5e76\u5668<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5de5\u4f5c\u4e2d\u7ecf\u5e38\u9700\u8981\u5c06\u591a\u4e2aPDF\u6587\u4ef6\u5408\u5e76\u6210\u4e00\u4e2a\u3002\u4e0b\u9762\u8fd9\u4e2a\u811a\u672c\u53ef\u4ee5\u8f7b\u677e\u5b9e\u73b0\u8fd9\u4e00\u70b9\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from&nbsp;PyPDF2&nbsp;import&nbsp;PdfMerger<br><br>def&nbsp;merge_pdfs(output_path,&nbsp;*input_paths):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u5408\u5e76\u591a\u4e2aPDF\u6587\u4ef6\u4e3a\u4e00\u4e2a\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;output_path:&nbsp;\u8f93\u51fa\u6587\u4ef6\u7684\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;input_paths:&nbsp;\u4e00\u4e2a\u6216\u591a\u4e2a\u8f93\u5165\u6587\u4ef6\u7684\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;merger&nbsp;=&nbsp;PdfMerger()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5faa\u73af\u6dfb\u52a0\u6bcf\u4e2aPDF\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;path&nbsp;in&nbsp;input_paths:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;merger.append(path)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5199\u5165\u8f93\u51fa\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;merger.write(output_path)<br>&nbsp;&nbsp;&nbsp;&nbsp;merger.close()<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Merged&nbsp;files&nbsp;into&nbsp;{output_path}\")<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>merge_pdfs(\"path\/to\/output.pdf\",&nbsp;\"path\/to\/file1.pdf\",&nbsp;\"path\/to\/file2.pdf\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Merged&nbsp;files&nbsp;into&nbsp;path\/to\/output.pdf<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_%E5%9B%BE%E7%89%87%E5%8E%8B%E7%BC%A9%E5%B7%A5%E5%85%B7\"><\/span><strong>4. \u56fe\u7247\u538b\u7f29\u5de5\u5177<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u53d1\u9001\u90ae\u4ef6\u6216\u8005\u4e0a\u4f20\u56fe\u7247\u65f6\uff0c\u5e38\u5e38\u9700\u8981\u5148\u538b\u7f29\u56fe\u7247\u4ee5\u51cf\u5c11\u6587\u4ef6\u5927\u5c0f\u3002\u8fd9\u4e2a\u811a\u672c\u5229\u7528Pillow\u5e93\u6765\u5b8c\u6210\u8fd9\u4e00\u4efb\u52a1\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from&nbsp;PIL&nbsp;import&nbsp;Image<br><br>def&nbsp;compress_image(file_path,&nbsp;output_path=None,&nbsp;quality=75):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u538b\u7f29\u56fe\u7247\u6587\u4ef6\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;file_path:&nbsp;\u8f93\u5165\u56fe\u7247\u7684\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;output_path:&nbsp;\u8f93\u51fa\u56fe\u7247\u7684\u8def\u5f84\uff0c\u9ed8\u8ba4\u4e3a\u539f\u6587\u4ef6\u8986\u76d6<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;quality:&nbsp;\u538b\u7f29\u8d28\u91cf\uff0c\u8303\u56f40-100<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;img&nbsp;=&nbsp;Image.open(file_path)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;output_path:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output_path&nbsp;=&nbsp;file_path<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;img.save(output_path,&nbsp;optimize=True,&nbsp;quality=quality)<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Image&nbsp;compressed&nbsp;and&nbsp;saved&nbsp;to&nbsp;{output_path}\")<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>compress_image(\"path\/to\/image.jpg\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Image&nbsp;compressed&nbsp;and&nbsp;saved&nbsp;to&nbsp;path\/to\/image.jpg<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_%E6%96%87%E6%9C%AC%E5%86%85%E5%AE%B9%E6%9B%BF%E6%8D%A2\"><\/span><strong>5. \u6587\u672c\u5185\u5bb9\u66ff\u6362<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u7f16\u8f91\u6587\u6863\u65f6\uff0c\u53ef\u80fd\u9700\u8981\u6279\u91cf\u66ff\u6362\u67d0\u4e9b\u6587\u672c\u5185\u5bb9\u3002\u8fd9\u4e2a\u811a\u672c\u53ef\u4ee5\u5e2e\u4f60\u5feb\u901f\u5b9e\u73b0\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def&nbsp;replace_text_in_files(directory,&nbsp;old_text,&nbsp;new_text):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u5728\u6307\u5b9a\u76ee\u5f55\u4e0b\u6240\u6709\u6587\u672c\u6587\u4ef6\u4e2d\u66ff\u6362\u6307\u5b9a\u6587\u672c\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;directory:&nbsp;\u6587\u4ef6\u6240\u5728\u7684\u76ee\u5f55<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;old_text:&nbsp;\u8981\u88ab\u66ff\u6362\u7684\u6587\u672c<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;new_text:&nbsp;\u65b0\u6587\u672c<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;filename&nbsp;in&nbsp;os.listdir(directory):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;filename.endswith(\".txt\"):&nbsp;&nbsp;<em>#&nbsp;\u53ea\u5904\u7406.txt\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_path&nbsp;=&nbsp;os.path.join(directory,&nbsp;filename)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(file_path,&nbsp;'r',&nbsp;encoding='utf-8')&nbsp;as&nbsp;file:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_data&nbsp;=&nbsp;file.read()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u66ff\u6362\u6587\u672c<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_data&nbsp;=&nbsp;file_data.replace(old_text,&nbsp;new_text)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5199\u56de\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(file_path,&nbsp;'w',&nbsp;encoding='utf-8')&nbsp;as&nbsp;file:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.write(file_data)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Replaced&nbsp;text&nbsp;in&nbsp;{filename}\")<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>replace_text_in_files(\"path\/to\/text\/files\",&nbsp;\"old_text\",&nbsp;\"new_text\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Replaced&nbsp;text&nbsp;in&nbsp;file1.txt<br>Replaced&nbsp;text&nbsp;in&nbsp;file2.txt<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"6_%E6%95%B0%E6%8D%AE%E6%8A%93%E5%8F%96%E4%B8%8E%E8%A7%A3%E6%9E%90\"><\/span><strong>6. \u6570\u636e\u6293\u53d6\u4e0e\u89e3\u6790<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5728\u8fdb\u884c\u5e02\u573a\u8c03\u7814\u6216\u6570\u636e\u5206\u6790\u65f6\uff0c\u4ece\u7f51\u9875\u4e0a\u6293\u53d6\u6570\u636e\u662f\u4e00\u9879\u5e38\u89c1\u7684\u4efb\u52a1\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u4f7f\u7528 <code>requests<\/code> \u548c <code>BeautifulSoup<\/code> \u5e93\u6765\u6293\u53d6\u548c\u89e3\u6790\u7f51\u9875\u6570\u636e\u7684\u4f8b\u5b50\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;requests<br>from&nbsp;bs4&nbsp;import&nbsp;BeautifulSoup<br><br>def&nbsp;scrape_webpage(url):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u6293\u53d6\u5e76\u89e3\u6790\u7f51\u9875\u4e0a\u7684\u6570\u636e\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;url:&nbsp;\u76ee\u6807\u7f51\u9875\u7684URL<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u53d1\u9001\u8bf7\u6c42\u83b7\u53d6\u7f51\u9875\u5185\u5bb9<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;requests.get(url)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u89e3\u6790HTML\u5185\u5bb9<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;soup&nbsp;=&nbsp;BeautifulSoup(response.text,&nbsp;'html.parser')<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u63d0\u53d6\u7279\u5b9a\u4fe1\u606f\uff08\u4f8b\u5982\u6807\u9898\uff09<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;titles&nbsp;=&nbsp;soup.find_all('h1')<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u6253\u5370\u63d0\u53d6\u7684\u4fe1\u606f<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;title&nbsp;in&nbsp;titles:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(title.text.strip())<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>scrape_webpage(\"https:\/\/example.com\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Example&nbsp;Domain<br>This&nbsp;domain&nbsp;is&nbsp;for&nbsp;use&nbsp;in&nbsp;illustrative&nbsp;examples&nbsp;in&nbsp;documents.<br>You&nbsp;may&nbsp;use&nbsp;this&nbsp;domain&nbsp;in&nbsp;literature&nbsp;without&nbsp;prior&nbsp;coordination&nbsp;or&nbsp;asking&nbsp;for&nbsp;permission.<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"7_%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%87%BA%E5%88%B0CSV\"><\/span><strong>7. \u6570\u636e\u5bfc\u51fa\u5230CSV<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6293\u53d6\u7684\u6570\u636e\u901a\u5e38\u9700\u8981\u5bfc\u51fa\u5230CSV\u6587\u4ef6\u4ee5\u4fbf\u8fdb\u4e00\u6b65\u5206\u6790\u3002\u4ee5\u4e0b\u811a\u672c\u5c55\u793a\u4e86\u5982\u4f55\u5c06\u6570\u636e\u5bfc\u51fa\u5230CSV\u6587\u4ef6\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;csv<br><br>def&nbsp;export_to_csv(data,&nbsp;file_path):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u5c06\u6570\u636e\u5bfc\u51fa\u5230CSV\u6587\u4ef6\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;data:&nbsp;\u8981\u5bfc\u51fa\u7684\u6570\u636e\u5217\u8868\uff0c\u6bcf\u4e2a\u5143\u7d20\u662f\u4e00\u4e2a\u5b57\u5178<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;file_path:&nbsp;CSV\u6587\u4ef6\u7684\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u786e\u5b9aCSV\u6587\u4ef6\u7684\u5b57\u6bb5<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;fieldnames&nbsp;=&nbsp;data&#91;0].keys()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u6253\u5f00CSV\u6587\u4ef6\u5e76\u5199\u5165\u6570\u636e<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(file_path,&nbsp;'w',&nbsp;newline='',&nbsp;encoding='utf-8')&nbsp;as&nbsp;csvfile:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer&nbsp;=&nbsp;csv.DictWriter(csvfile,&nbsp;fieldnames=fieldnames)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5199\u5165\u8868\u5934<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.writeheader()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5199\u5165\u6bcf\u4e00\u884c\u6570\u636e<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;row&nbsp;in&nbsp;data:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.writerow(row)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Data&nbsp;exported&nbsp;to&nbsp;{file_path}\")<br><br><em>#&nbsp;\u793a\u4f8b\u6570\u636e<\/em><br>data&nbsp;=&nbsp;&#91;<br>&nbsp;&nbsp;&nbsp;&nbsp;{'Name':&nbsp;'Alice',&nbsp;'Age':&nbsp;25,&nbsp;'City':&nbsp;'New&nbsp;York'},<br>&nbsp;&nbsp;&nbsp;&nbsp;{'Name':&nbsp;'Bob',&nbsp;'Age':&nbsp;30,&nbsp;'City':&nbsp;'San&nbsp;Francisco'}<br>]<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>export_to_csv(data,&nbsp;\"path\/to\/output.csv\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Data&nbsp;exported&nbsp;to&nbsp;path\/to\/output.csv<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8_%E9%82%AE%E4%BB%B6%E8%87%AA%E5%8A%A8%E5%8F%91%E9%80%81\"><\/span><strong>8. \u90ae\u4ef6\u81ea\u52a8\u53d1\u9001<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5de5\u4f5c\u4e2d\u7ecf\u5e38\u9700\u8981\u53d1\u9001\u5927\u91cf\u7684\u7535\u5b50\u90ae\u4ef6\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u4f7f\u7528 <code>smtplib<\/code> \u5e93\u81ea\u52a8\u53d1\u9001\u90ae\u4ef6\u7684\u4f8b\u5b50\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;smtplib<br>from&nbsp;email.mime.text&nbsp;import&nbsp;MIMEText<br>from&nbsp;email.mime.multipart&nbsp;import&nbsp;MIMEMultipart<br><br>def&nbsp;send_email(subject,&nbsp;body,&nbsp;recipient,&nbsp;sender=\"your_email@example.com\"):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;subject:&nbsp;\u90ae\u4ef6\u4e3b\u9898<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;body:&nbsp;\u90ae\u4ef6\u6b63\u6587<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;recipient:&nbsp;\u6536\u4ef6\u4eba\u90ae\u7bb1\u5730\u5740<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;sender:&nbsp;\u53d1\u4ef6\u4eba\u90ae\u7bb1\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3a\"your_email@example.com\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u521b\u5efa\u90ae\u4ef6\u5bf9\u8c61<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;MIMEMultipart()<br>&nbsp;&nbsp;&nbsp;&nbsp;message&#91;'From']&nbsp;=&nbsp;sender<br>&nbsp;&nbsp;&nbsp;&nbsp;message&#91;'To']&nbsp;=&nbsp;recipient<br>&nbsp;&nbsp;&nbsp;&nbsp;message&#91;'Subject']&nbsp;=&nbsp;subject<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u6dfb\u52a0\u90ae\u4ef6\u6b63\u6587<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;message.attach(MIMEText(body,&nbsp;'plain'))<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u53d1\u9001\u90ae\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;smtplib.SMTP('smtp.example.com',&nbsp;587)&nbsp;as&nbsp;server:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.starttls()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.login(sender,&nbsp;'your_password')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.sendmail(sender,&nbsp;recipient,&nbsp;message.as_string())<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Email&nbsp;sent&nbsp;to&nbsp;{recipient}\")<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>send_email(\"Meeting&nbsp;Reminder\",&nbsp;\"Don't&nbsp;forget&nbsp;the&nbsp;meeting&nbsp;at&nbsp;2&nbsp;PM.\",&nbsp;\"recipient@example.com\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Email&nbsp;sent&nbsp;to&nbsp;recipient@example.com<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"9_%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9B%91%E6%8E%A7%E4%B8%8E%E5%90%8C%E6%AD%A5\"><\/span><strong>9. \u6587\u4ef6\u5939\u76d1\u63a7\u4e0e\u540c\u6b65<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6709\u65f6\u9700\u8981\u5b9e\u65f6\u76d1\u63a7\u6587\u4ef6\u5939\u7684\u53d8\u5316\uff0c\u5e76\u5c06\u66f4\u6539\u540c\u6b65\u5230\u53e6\u4e00\u4e2a\u4f4d\u7f6e\u3002\u4ee5\u4e0b\u811a\u672c\u5c55\u793a\u4e86\u5982\u4f55\u4f7f\u7528 <code>watchdog<\/code> \u5e93\u5b9e\u73b0\u8fd9\u4e00\u529f\u80fd\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from&nbsp;watchdog.observers&nbsp;import&nbsp;Observer<br>from&nbsp;watchdog.events&nbsp;import&nbsp;FileSystemEventHandler<br><br>class&nbsp;FolderSyncHandler(FileSystemEventHandler):<br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self,&nbsp;source_folder,&nbsp;target_folder):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.source_folder&nbsp;=&nbsp;source_folder<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.target_folder&nbsp;=&nbsp;target_folder<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;on_modified(self,&nbsp;event):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5f53\u6587\u4ef6\u5939\u4e2d\u7684\u6587\u4ef6\u88ab\u4fee\u6539\u65f6\u89e6\u53d1\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;event.is_directory:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source_path&nbsp;=&nbsp;event.src_path<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target_path&nbsp;=&nbsp;source_path.replace(self.source_folder,&nbsp;self.target_folder)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u590d\u5236\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(source_path,&nbsp;'rb')&nbsp;as&nbsp;src_file:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(target_path,&nbsp;'wb')&nbsp;as&nbsp;target_file:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target_file.write(src_file.read())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"File&nbsp;synced&nbsp;from&nbsp;{source_path}&nbsp;to&nbsp;{target_path}\")<br><br>def&nbsp;sync_folders(source_folder,&nbsp;target_folder):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u76d1\u63a7\u6e90\u6587\u4ef6\u5939\u5e76\u5c06\u66f4\u6539\u540c\u6b65\u5230\u76ee\u6807\u6587\u4ef6\u5939\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;source_folder:&nbsp;\u6e90\u6587\u4ef6\u5939\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;target_folder:&nbsp;\u76ee\u6807\u6587\u4ef6\u5939\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;event_handler&nbsp;=&nbsp;FolderSyncHandler(source_folder,&nbsp;target_folder)<br>&nbsp;&nbsp;&nbsp;&nbsp;observer&nbsp;=&nbsp;Observer()<br>&nbsp;&nbsp;&nbsp;&nbsp;observer.schedule(event_handler,&nbsp;source_folder,&nbsp;recursive=True)<br>&nbsp;&nbsp;&nbsp;&nbsp;observer.start()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;try:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;True:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass<br>&nbsp;&nbsp;&nbsp;&nbsp;except&nbsp;KeyboardInterrupt:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;observer.stop()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;observer.join()<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>sync_folders(\"path\/to\/source\/folder\",&nbsp;\"path\/to\/target\/folder\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>File&nbsp;synced&nbsp;from&nbsp;path\/to\/source\/folder\/file.txt&nbsp;to&nbsp;path\/to\/target\/folder\/file.txt<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"10_%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C\"><\/span><strong>10. \u6570\u636e\u5e93\u64cd\u4f5c<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5728\u5904\u7406\u5927\u91cf\u6570\u636e\u65f6\uff0c\u6570\u636e\u5e93\u662f\u4e00\u4e2a\u975e\u5e38\u6709\u7528\u7684\u5de5\u5177\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u4f7f\u7528 <code>sqlite3<\/code> \u5e93\u6765\u521b\u5efa\u548c\u67e5\u8be2\u6570\u636e\u5e93\u7684\u4f8b\u5b50\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;sqlite3<br><br>def&nbsp;create_and_query_database():<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684SQLite\u6570\u636e\u5e93\u5e76\u8fdb\u884c\u67e5\u8be2\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u8fde\u63a5\u5230SQLite\u6570\u636e\u5e93<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;sqlite3.connect('example.db')<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u521b\u5efa\u6e38\u6807<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;conn.cursor()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u521b\u5efa\u8868<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute('''<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE&nbsp;TABLE&nbsp;IF&nbsp;NOT&nbsp;EXISTS&nbsp;employees&nbsp;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;INTEGER&nbsp;PRIMARY&nbsp;KEY,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;TEXT,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age&nbsp;INTEGER<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;''')<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u63d2\u5165\u6570\u636e<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(\"INSERT&nbsp;INTO&nbsp;employees&nbsp;(name,&nbsp;age)&nbsp;VALUES&nbsp;('Alice',&nbsp;25)\")<br>&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(\"INSERT&nbsp;INTO&nbsp;employees&nbsp;(name,&nbsp;age)&nbsp;VALUES&nbsp;('Bob',&nbsp;30)\")<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u63d0\u4ea4\u4e8b\u52a1<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;conn.commit()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u67e5\u8be2\u6570\u636e<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(\"SELECT&nbsp;*&nbsp;FROM&nbsp;employees\")<br>&nbsp;&nbsp;&nbsp;&nbsp;rows&nbsp;=&nbsp;cursor.fetchall()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u6253\u5370\u67e5\u8be2\u7ed3\u679c<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;row&nbsp;in&nbsp;rows:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(row)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5173\u95ed\u8fde\u63a5<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;conn.close()<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>create_and_query_database()<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(1,&nbsp;'Alice',&nbsp;25)<br>(2,&nbsp;'Bob',&nbsp;30)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"11_%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95\"><\/span><strong>11. \u65e5\u5fd7\u8bb0\u5f55<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u65e5\u5fd7\u8bb0\u5f55\u662f\u975e\u5e38\u91cd\u8981\u7684\u3002\u4ee5\u4e0b\u811a\u672c\u5c55\u793a\u4e86\u5982\u4f55\u4f7f\u7528 <code>logging<\/code> \u5e93\u8bb0\u5f55\u65e5\u5fd7\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;logging<br><br>def&nbsp;setup_logger():<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u8bbe\u7f6e\u65e5\u5fd7\u8bb0\u5f55\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u521b\u5efalogger<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;logger&nbsp;=&nbsp;logging.getLogger('my_logger')<br>&nbsp;&nbsp;&nbsp;&nbsp;logger.setLevel(logging.DEBUG)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u521b\u5efahandler<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;file_handler&nbsp;=&nbsp;logging.FileHandler('app.log')<br>&nbsp;&nbsp;&nbsp;&nbsp;console_handler&nbsp;=&nbsp;logging.StreamHandler()<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;file_handler.setLevel(logging.DEBUG)<br>&nbsp;&nbsp;&nbsp;&nbsp;console_handler.setLevel(logging.INFO)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5b9a\u4e49\u65e5\u5fd7\u683c\u5f0f<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;formatter&nbsp;=&nbsp;logging.Formatter('%(asctime)s&nbsp;-&nbsp;%(levelname)s&nbsp;-&nbsp;%(message)s')<br>&nbsp;&nbsp;&nbsp;&nbsp;file_handler.setFormatter(formatter)<br>&nbsp;&nbsp;&nbsp;&nbsp;console_handler.setFormatter(formatter)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u6dfb\u52a0handler\u5230logger<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;logger.addHandler(file_handler)<br>&nbsp;&nbsp;&nbsp;&nbsp;logger.addHandler(console_handler)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;logger<br><br>def&nbsp;log_example(logger):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u8bb0\u5f55\u65e5\u5fd7\u793a\u4f8b\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;logger:&nbsp;\u65e5\u5fd7\u8bb0\u5f55\u5668<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(\"This&nbsp;is&nbsp;a&nbsp;debug&nbsp;message\")<br>&nbsp;&nbsp;&nbsp;&nbsp;logger.info(\"This&nbsp;is&nbsp;an&nbsp;info&nbsp;message\")<br>&nbsp;&nbsp;&nbsp;&nbsp;logger.warning(\"This&nbsp;is&nbsp;a&nbsp;warning&nbsp;message\")<br>&nbsp;&nbsp;&nbsp;&nbsp;logger.error(\"This&nbsp;is&nbsp;an&nbsp;error&nbsp;message\")<br>&nbsp;&nbsp;&nbsp;&nbsp;logger.critical(\"This&nbsp;is&nbsp;a&nbsp;critical&nbsp;message\")<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>logger&nbsp;=&nbsp;setup_logger()<br>log_example(logger)<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2023-09-25&nbsp;14:30:00,123&nbsp;-&nbsp;INFO&nbsp;-&nbsp;This&nbsp;is&nbsp;an&nbsp;info&nbsp;message<br>2023-09-25&nbsp;14:30:00,123&nbsp;-&nbsp;WARNING&nbsp;-&nbsp;This&nbsp;is&nbsp;a&nbsp;warning&nbsp;message<br>2023-09-25&nbsp;14:30:00,123&nbsp;-&nbsp;ERROR&nbsp;-&nbsp;This&nbsp;is&nbsp;an&nbsp;error&nbsp;message<br>2023-09-25&nbsp;14:30:00,123&nbsp;-&nbsp;CRITICAL&nbsp;-&nbsp;This&nbsp;is&nbsp;a&nbsp;critical&nbsp;message<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"12_%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96\"><\/span><strong>12. \u6570\u636e\u53ef\u89c6\u5316<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5728\u6570\u636e\u5206\u6790\u4e2d\uff0c\u6570\u636e\u53ef\u89c6\u5316\u662f\u5fc5\u4e0d\u53ef\u5c11\u7684\u4e00\u90e8\u5206\u3002\u4ee5\u4e0b\u811a\u672c\u5c55\u793a\u4e86\u5982\u4f55\u4f7f\u7528 <code>matplotlib<\/code> \u5e93\u7ed8\u5236\u7b80\u5355\u7684\u56fe\u8868\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;matplotlib.pyplot&nbsp;as&nbsp;plt<br><br>def&nbsp;plot_data(x,&nbsp;y):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u7ed8\u5236\u6570\u636e\u56fe\u8868\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;x:&nbsp;X\u8f74\u6570\u636e<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;y:&nbsp;Y\u8f74\u6570\u636e<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;plt.plot(x,&nbsp;y)<br>&nbsp;&nbsp;&nbsp;&nbsp;plt.xlabel('X&nbsp;Label')<br>&nbsp;&nbsp;&nbsp;&nbsp;plt.ylabel('Y&nbsp;Label')<br>&nbsp;&nbsp;&nbsp;&nbsp;plt.title('Simple&nbsp;Plot')<br>&nbsp;&nbsp;&nbsp;&nbsp;plt.show()<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>x&nbsp;=&nbsp;&#91;1,&nbsp;2,&nbsp;3,&nbsp;4,&nbsp;5]<br>y&nbsp;=&nbsp;&#91;2,&nbsp;4,&nbsp;6,&nbsp;8,&nbsp;10]<br>plot_data(x,&nbsp;y)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"13_PDF%E6%8B%86%E5%88%86%E5%99%A8\"><\/span><strong>13. PDF\u62c6\u5206\u5668<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6709\u65f6\u9700\u8981\u5c06\u4e00\u4e2a\u5927\u7684PDF\u6587\u4ef6\u62c6\u5206\u6210\u591a\u4e2a\u5c0f\u6587\u4ef6\u3002\u4ee5\u4e0b\u811a\u672c\u5c55\u793a\u4e86\u5982\u4f55\u4f7f\u7528 <code>PyPDF2<\/code> \u5e93\u6765\u5b9e\u73b0\u8fd9\u4e00\u529f\u80fd\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from&nbsp;PyPDF2&nbsp;import&nbsp;PdfReader,&nbsp;PdfWriter<br><br>def&nbsp;split_pdf(input_path,&nbsp;output_dir):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u5c06PDF\u6587\u4ef6\u62c6\u5206\u6210\u591a\u4e2a\u5c0f\u6587\u4ef6\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;input_path:&nbsp;\u8f93\u5165PDF\u6587\u4ef6\u7684\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;output_dir:&nbsp;\u8f93\u51fa\u6587\u4ef6\u5939\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u8bfb\u53d6PDF\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;reader&nbsp;=&nbsp;PdfReader(input_path)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5faa\u73af\u62c6\u5206\u6bcf\u4e00\u9875<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;page_num&nbsp;in&nbsp;range(len(reader.pages)):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer&nbsp;=&nbsp;PdfWriter()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.add_page(reader.pages&#91;page_num])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u751f\u6210\u8f93\u51fa\u6587\u4ef6\u540d<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output_path&nbsp;=&nbsp;os.path.join(output_dir,&nbsp;f\"page_{page_num&nbsp;+&nbsp;1}.pdf\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5199\u5165\u8f93\u51fa\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(output_path,&nbsp;'wb')&nbsp;as&nbsp;output_file:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.write(output_file)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Split&nbsp;page&nbsp;{page_num&nbsp;+&nbsp;1}&nbsp;to&nbsp;{output_path}\")<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>split_pdf(\"path\/to\/input.pdf\",&nbsp;\"path\/to\/output\/directory\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Split&nbsp;page&nbsp;1&nbsp;to&nbsp;path\/to\/output\/directory\/page_1.pdf<br>Split&nbsp;page&nbsp;2&nbsp;to&nbsp;path\/to\/output\/directory\/page_2.pdf<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"14_%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B%EF%BC%9A%E8%87%AA%E5%8A%A8%E5%8C%96%E6%8A%A5%E8%A1%A8%E7%94%9F%E6%88%90\"><\/span><strong>14. \u5b9e\u6218\u6848\u4f8b\uff1a\u81ea\u52a8\u5316\u62a5\u8868\u751f\u6210<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5047\u8bbe\u4f60\u9700\u8981\u6bcf\u4e2a\u6708\u81ea\u52a8\u751f\u6210\u4e00\u4efd\u9500\u552e\u62a5\u544a\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a\u5b8c\u6574\u7684\u811a\u672c\uff0c\u5c55\u793a\u5982\u4f55\u4eceExcel\u6587\u4ef6\u4e2d\u8bfb\u53d6\u6570\u636e\uff0c\u751f\u6210\u5206\u6790\u62a5\u544a\uff0c\u5e76\u53d1\u9001\u7ed9\u76f8\u5173\u4eba\u5458\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;pandas&nbsp;as&nbsp;pd<br>from&nbsp;reportlab.lib.pagesizes&nbsp;import&nbsp;letter<br>from&nbsp;reportlab.pdfgen&nbsp;import&nbsp;canvas<br>import&nbsp;smtplib<br>from&nbsp;email.mime.text&nbsp;import&nbsp;MIMEText<br>from&nbsp;email.mime.multipart&nbsp;import&nbsp;MIMEMultipart<br>from&nbsp;email.mime.application&nbsp;import&nbsp;MIMEApplication<br><br>def&nbsp;generate_report(excel_path,&nbsp;pdf_path):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u4eceExcel\u6587\u4ef6\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u751f\u6210PDF\u62a5\u544a\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;excel_path:&nbsp;Excel\u6587\u4ef6\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;pdf_path:&nbsp;PDF\u6587\u4ef6\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u8bfb\u53d6Excel\u6587\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;df&nbsp;=&nbsp;pd.read_excel(excel_path)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u5206\u6790\u6570\u636e<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;total_sales&nbsp;=&nbsp;df&#91;'Sales'].sum()<br>&nbsp;&nbsp;&nbsp;&nbsp;top_products&nbsp;=&nbsp;df.groupby('Product')&#91;'Sales'].sum().nlargest(5)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u521b\u5efaPDF\u62a5\u544a<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;=&nbsp;canvas.Canvas(pdf_path,&nbsp;pagesize=letter)<br>&nbsp;&nbsp;&nbsp;&nbsp;c.drawString(100,&nbsp;750,&nbsp;\"Monthly&nbsp;Sales&nbsp;Report\")<br>&nbsp;&nbsp;&nbsp;&nbsp;c.drawString(100,&nbsp;730,&nbsp;f\"Total&nbsp;Sales:&nbsp;${total_sales:.2f}\")<br>&nbsp;&nbsp;&nbsp;&nbsp;c.drawString(100,&nbsp;710,&nbsp;\"Top&nbsp;Products:\")<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;690<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;product,&nbsp;sales&nbsp;in&nbsp;top_products.items():<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.drawString(120,&nbsp;y,&nbsp;f\"{product}:&nbsp;${sales:.2f}\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;-=&nbsp;20<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;c.save()<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Report&nbsp;generated&nbsp;at&nbsp;{pdf_path}\")<br><br>def&nbsp;send_report(pdf_path,&nbsp;recipient,&nbsp;sender=\"your_email@example.com\"):<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\u53d1\u9001PDF\u62a5\u544a\u3002<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;pdf_path:&nbsp;PDF\u6587\u4ef6\u8def\u5f84<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;recipient:&nbsp;\u6536\u4ef6\u4eba\u90ae\u7bb1\u5730\u5740<br>&nbsp;&nbsp;&nbsp;&nbsp;:param&nbsp;sender:&nbsp;\u53d1\u4ef6\u4eba\u90ae\u7bb1\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3a\"your_email@example.com\"<br>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u521b\u5efa\u90ae\u4ef6\u5bf9\u8c61<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;MIMEMultipart()<br>&nbsp;&nbsp;&nbsp;&nbsp;message&#91;'From']&nbsp;=&nbsp;sender<br>&nbsp;&nbsp;&nbsp;&nbsp;message&#91;'To']&nbsp;=&nbsp;recipient<br>&nbsp;&nbsp;&nbsp;&nbsp;message&#91;'Subject']&nbsp;=&nbsp;\"Monthly&nbsp;Sales&nbsp;Report\"<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u6dfb\u52a0\u90ae\u4ef6\u6b63\u6587<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;message.attach(MIMEText(\"Please&nbsp;find&nbsp;attached&nbsp;the&nbsp;monthly&nbsp;sales&nbsp;report.\"))<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u6dfb\u52a0\u9644\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(pdf_path,&nbsp;'rb')&nbsp;as&nbsp;file:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attachment&nbsp;=&nbsp;MIMEApplication(file.read(),&nbsp;_subtype=\"pdf\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attachment.add_header('Content-Disposition',&nbsp;'attachment',&nbsp;filename=os.path.basename(pdf_path))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message.attach(attachment)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;\u53d1\u9001\u90ae\u4ef6<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;smtplib.SMTP('smtp.example.com',&nbsp;587)&nbsp;as&nbsp;server:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.starttls()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.login(sender,&nbsp;'your_password')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.sendmail(sender,&nbsp;recipient,&nbsp;message.as_string())<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Report&nbsp;sent&nbsp;to&nbsp;{recipient}\")<br><br><em>#&nbsp;\u4f7f\u7528\u793a\u4f8b<\/em><br>generate_report(\"path\/to\/sales_data.xlsx\",&nbsp;\"path\/to\/report.pdf\")<br>send_report(\"path\/to\/report.pdf\",&nbsp;\"recipient@example.com\")<\/code><\/pre>\n\n\n\n<p><strong>\u8f93\u51fa\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Report&nbsp;generated&nbsp;at&nbsp;path\/to\/report.pdf<br>Report&nbsp;sent&nbsp;to&nbsp;recipient@example.com<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5f15\u8a00 \u5728\u65e5\u5e38\u5de5\u4f5c\u4e2d\uff0c\u91cd\u590d\u6027\u7684\u4efb\u52a1\u4e0d\u4ec5\u8017\u65f6\uff0c\u8fd8\u5bb9\u6613\u51fa\u9519\u3002Python\u51ed\u501f\u5176\u7b80\u6d01\u6613\u5b66\u7684\u8bed\u6cd5\uff0c\u6210\u4e3a\u8bb8\u591a\u529e\u516c&hellip; <a href=\"http:\/\/viplao.com\/index.php\/2024\/11\/16\/python%e5%9f%ba%e7%a1%80%e6%8a%80%e8%83%bd-python%e8%87%aa%e5%8a%a8%e5%8c%96%e5%8a%9e%e5%85%ac%e7%9a%8414%e4%b8%aa%e5%ae%9e%e7%94%a8%e8%84%9a%e6%9c%ac\/\" class=\"more-link read-more\" rel=\"bookmark\">\u7ee7\u7eed\u9605\u8bfb <span class=\"screen-reader-text\">PYTHON\u57fa\u7840\u6280\u80fd \u2013\u00a0Python\u81ea\u52a8\u5316\u529e\u516c\u768414\u4e2a\u5b9e\u7528\u811a\u672c<\/span><i class=\"fa fa-arrow-right\"><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[28],"views":1067,"_links":{"self":[{"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/posts\/2895"}],"collection":[{"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/comments?post=2895"}],"version-history":[{"count":1,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/posts\/2895\/revisions"}],"predecessor-version":[{"id":2896,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/posts\/2895\/revisions\/2896"}],"wp:attachment":[{"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/media?parent=2895"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/categories?post=2895"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/tags?post=2895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}