Python读rar/zip文件
最近要做论文分享,为了不跟实验室之前分享的论文冲突,我需要知道之前都有分享过了哪些论文,然而之前居然没有整理一个已分享论文的列表,只有一堆压缩包,我只能把它们都下载下来,一个一个看看都有哪些论文。
既然这样,为什么不写个脚本自动读出来呢?
刚开始写,我就遇到了个问题,怎么读rar和zip文件?年纪大了,不把这些代码片段记下来,就得每次都google,那就真的是"google工程师"了。
读rar文件
首先,得安装unrar,以mac电脑为例
brew install unrar
再安装python包:
pip install unrar
然后是这样读取:
from unrar import rarfile
def get_rar_dir(rar_file_path):
'''获取rar压缩文件夹dir'''
rar = rarfile.RarFile(rar_file_path)
rar_dir = rar.namelist()
return rar_dir
读zip文件
安装python包:
pip install zipfile37
然后是这样读取:
import zipfile
def get_zip_dir(zip_file_path):
'''获取zip压缩文件夹dir'''
_zip = zipfile.ZipFile(zip_file_path)
zip_dir = _zip.namelist()
return zip_dir
最后,完整的读取已分享论文的代码是:
from unrar import rarfile
from os import path
from glob import glob
import os
import zipfile
def get_rar_dir(rar_file_path):
'''获取rar压缩文件夹dir'''
rar = rarfile.RarFile(rar_file_path)
rar_dir = rar.namelist()
return rar_dir
def get_zip_dir(zip_file_path):
'''获取zip压缩文件夹dir'''
_zip = zipfile.ZipFile(zip_file_path)
zip_dir = _zip.namelist()
return zip_dir
dir_path = './'
all_files = []
for d in glob(os.path.join(dir_path, '*.rar')):
rar_files = get_rar_dir(d)
all_files.extend(rar_files)
for d in glob(os.path.join(dir_path, '*.zip')):
# print(d)
zip_files = get_zip_dir(d)
all_files.extend(zip_files)
for f in all_files:
if '.pdf' in f:
print(f[f.find('/') + 1:])