簡體   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