繁体   English   中英

我怎样才能只压缩 py7zr 中选定的单个文件?

[英]How can I only compress selected individual files in py7zr?

我有一个包含文件路径的列表(在我的例子中是电影),它被称为collectMovies并遵循数据结构:

['C:\\Users\\UserName\\Desktop\\Movies\\pso-cash-sd.mkv',
'C:\\Users\\UserName\\Desktop\\Movies\\hda-casino.royale.uncut-1080p.mkv']

我如何压缩电影,以便只有电影而不是整个目录被压缩并显示在 7zip 存档中?

我尝试的是:

import py7zr

with py7zr.SevenZipFile("files.7z","w") as mov:
    for val in collectMovies:
        val = val.replace(r"\\",r"\\")
        try:
            mov.write(val)
        except:
            print("File not Found")

这有效,但它也写入目录。 我只想在存档中写入电影文件。

C:\\Users\\UserName\\Desktop\\Movies\\pso-cash-sd.mkv

我想要的是,只有pso-cash-sd.mkv显示在压缩存档中。

实际的 output 看起来像这样(带有子文件夹):

在此处输入图像描述

我想要的是,只显示电影,例如:

在此处输入图像描述

选项 1:消除从 Movies 目录构建图像列表和必须使用os.listdir()os.chdir()操作路径字符串。 恕我直言,如果您想更改电影文件的路径,这是一种更干净且不易出错的方法。

import os
import py7zr

movie_dir = r'"C:\Users\UserName\Desktop\Movies\"'

with py7zr.SevenZipFile('files.7z','w') as mov:
    for item in os.listdir(movie_dir):
        try:
            os.chdir(movie_dir)
            mov.write(item)
        except:  
            print('File not Found')  

选项 2:使用原始问题中使用的列表方法,从路径字符串中提取电影文件名并使用os.chdir()

import os
import py7zr

movie_dir = r'"C:\Users\UserName\Desktop\Movies\"'

collectMovies = ['C:\\Users\\UserName\\Desktop\\Movies\\pso-cash-sd.mkv',
'C:\\Users\\UserName\\Desktop\\Movies\\hda-casino.royale.uncut-1080p.mkv']

with py7zr.SevenZipFile('files.7z','w') as mov:
    for val in collectMovies:
        # extract file name from path:
        val = val.split('\\')[5]
        try:
            os.chdir(movie_dir)
            mov.write(val)
        except:
            print('File not Found')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM