好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 xxkiss 于 2023-8-30 19:03 编辑
最近学习python中,想调用winrar批量解压几万个文件,
目前已做到能把所有文件按完整路径解压在压缩包同目录,
但是因为包中文件太多太大,大部分包解压的时间来到了10秒以上,
在想能否只解压我需要的那一个文件,位于output.zip\xpells\app01 中的Data文件,
于是各种晚上查资料,查例子,硬是没搞定,特来求助,望各位大神多多提点小弟,拜谢!
目前的代码如下,Data文件只会解压到output文件夹中,而无法保持原始的两层目录,待解决
for i in un_df.index:
df_data = df.loc
log_id = df_data.get(columns[1])
acc = df_data.get(columns[2])
f_path = my_data.loc[my_data[columns[2]] == acc].values[0][1]
password = df_data.get(columns[3])
print(acc, password)
print(f'开始处理文件:{f_path}')
ex_path = os.getcwd() + folder_path + f'/{acc}'
if os.path.exists(ex_path):
shutil.rmtree(ex_path)
os.makedirs(ex_path, exist_ok=True)
command = [
'C:\Program Files\WinRAR\WinRAR.exe',
'x',
#'-ibck', #如果去掉-ibck前面的#号,winrar会后台运行,解压速度会明显变慢
'-o+',
f'-p{password}',
f'{f_path}',
f'{ex_path}',
f'xpells\\app01\\Data' #压缩包内的目录结构,最终要解压的文件
]
try:
# 执行解压命令
subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True, text=True)
print('解压成功')
except subprocess.CalledProcessError as e:
print('解压失败:', e.stderr)
continue
except Exception as e:
print('发生错误:', str(e))
continue
|
-
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|