Добрый день,
Я очень плохо знаком с языком python, и мне поручили создать скрипт python, который будет получать все файлы вложений из электронных писем. Файлы вложений имели многодисковую часть (.zip, .z01, .z02, et c). Обычный zip-файл без какой-либо многодисковой части можно легко извлечь с помощью модуля zipfile. Этот код работает:
password = get_data()
files = [f for f in os.listdir(source_file_name) if isfile(join(source_file_name, f))]
for file in files:
if file.endswith('.zip'):
file_name_split = file.split("_")
resource_name = file_name_split[0]
pswd = password[resource_name]
if resource_name not in listdir('extracted/'):
zip_ref = zipfile.ZipFile('attachments/' +file)
zip_ref.setpassword(pwd = bytes(pswd, 'utf-8'))
zip_ref.extractall('extracted')
zip_ref.close()
os.unlink(source_file_name + file)
Но я не могу использовать этот код в многодисковом файле, так как модуль zip-файла не поддерживает ZIP-файлы с добавленными комментариями или многодисковые ZIP-файлы, как сказано в документах. Модуль почтового файла. Я ищу в Google альтернативы и вхожу в приложение 7z, используя модуль подпроцесса python. Вот мой код на этом.
zip_exe = '"C:/Program Files/7-Zip/7z.exe"' + ' x ' '"' + tmp_folder + 'ACERES.zip' '"'
subprocess.Popen(zip_exe, shell = True, cwd = tmp_extracted_folder)
Это работает на моем локальном компьютере, используя мой рабочий стол Windows 10 без каких-либо проблем. Но мне было интересно, как я могу поставить этот скрипт в облачной функции Google? Я m not sure that this will work easily by just putting on this script. Do I need to install 7z application on cloud function? I
м не уверен. Ребята, вы понимаете, сработает ли это? Мне нужна помощь, я застреваю в этом приложении.
Если есть другой способ обойти, пожалуйста, дайте мне знать. Заранее спасибо.