我怎样才能只压缩 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
。
实际输出如下所示(带有子文件夹):
我想要的是只显示电影,例如:
选项 1: 无需使用 os.listdir()
和 os.chdir()
从 Movies 目录中构建图像列表和处理路径字符串。恕我直言,如果您想更改电影文件的路径,这是一种更干净且不易出错的方法。
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')
我有一个包含文件路径的列表(在我的例子中是电影),它被称为 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
。
实际输出如下所示(带有子文件夹):
我想要的是只显示电影,例如:
选项 1: 无需使用 os.listdir()
和 os.chdir()
从 Movies 目录中构建图像列表和处理路径字符串。恕我直言,如果您想更改电影文件的路径,这是一种更干净且不易出错的方法。
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')