<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>7z on KnightLi的博客</title>
        <link>https://www.knightli.com/tags/7z/</link>
        <description>Recent content in 7z on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 09 Feb 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://www.knightli.com/tags/7z/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>python 分别使用zip和7z格式,带密码压缩文件夹</title>
        <link>https://www.knightli.com/2025/02/09/python%E4%BD%BF%E7%94%A8zip%E5%92%8C7z%E5%8E%8B%E7%BC%A9%E6%96%87%E4%BB%B6%E5%A4%B9/</link>
        <pubDate>Sun, 09 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://www.knightli.com/2025/02/09/python%E4%BD%BF%E7%94%A8zip%E5%92%8C7z%E5%8E%8B%E7%BC%A9%E6%96%87%E4%BB%B6%E5%A4%B9/</guid>
        <description>&lt;h2 id=&#34;zip格式压缩&#34;&gt;zip格式压缩
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import pyzipper
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    with pyzipper.AESZipFile(dest+&amp;#39;.zip&amp;#39;, &amp;#34;w&amp;#34;, encryption=pyzipper.WZ_AES) as zf:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        zf.setpassword(b&amp;#34;password&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        for file in os.listdir(dest):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            fullfile = os.path.join(dest,file)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            zf.write(fullfile, file)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;import pyzipper vs import zipfile&lt;br&gt;
pyzipper和zipfileapi基本一致&lt;br&gt;
zipfile只支持解压缩时使用密码,不支持创建带密码的压缩包, pyzipper支持创建带密码的压缩包&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zf.write(path1, path2)&lt;br&gt;
path1: 要压缩的文件的路径&lt;br&gt;
path2: 压缩后在zip文件里的路径&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;pyzipper.AESZipFile&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;密码设置
encryption=pyzipper.WZ_AES   AES密码
zf.setpassword(b&amp;quot;password&amp;quot;)  设置密码&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7z格式压缩&#34;&gt;7z格式压缩
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import py7zr
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    with py7zr.SevenZipFile(dest + &amp;#39;.7z&amp;#39;, &amp;#39;w&amp;#39;, password=&amp;#39;password&amp;#39;) as archive:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        archive.writeall(dest, &amp;#39;&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;archive.writeall(path1, path2)&lt;br&gt;
path1 要压缩的文件的路径,可以是整个目录&lt;br&gt;
path2 压缩后在7z文件里的路径, &amp;lsquo;&amp;lsquo;表示是根目录&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设置密码&lt;br&gt;
password=&amp;lsquo;password&amp;rsquo;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
