import zipfile
import os
class ZipUtilities:
def toZip(self, file, filename):
zip_file = zipfile.ZipFile(filename, 'w')
if os.path.isfile(file):
zip_file.write(file)
else:
self.addFolderToZip(zip_file, file)
zip_file.close()
def addFolderToZip(self, zip_file, folder):
for file in os.listdir(folder):
full_path = os.path.join(folder, file)
if os.path.isfile(full_path):
print 'File added: ' + str(full_path)
zip_file.write(full_path)
elif os.path.isdir(full_path):
print 'Entering folder: ' + str(full_path)
self.addFolderToZip(zip_file, full_path)
def main():
utilities = ZipUtilities()
filename = 'TEMP.zip'
directory = 'TEMP'
utilities.toZip(directory, filename)
main()
Я запускаю:
python tozip.py
Это журнал:
havok@fireshield:~$ python tozip.py
File added: TEMP/NARF (7ª copia)
Entering folder: TEMP/TEMP2
File added: TEMP/TEMP2/NERF (otra copia)
File added: TEMP/TEMP2/NERF (copia)
File added: TEMP/TEMP2/NARF
File added: TEMP/TEMP2/NARF (copia)
File added: TEMP/TEMP2/NARF (otra copia)
Entering folder: TEMP/TEMP2/TEMP3
File added: TEMP/TEMP2/TEMP3/DOCUMENTO DEL FINAL
File added: TEMP/TEMP2/TEMP3/DOCUMENTO DEL FINAL (copia)
File added: TEMP/TEMP2/NERF
File added: TEMP/NARF (copia) (otra copia)
File added: TEMP/NARF (copia) (copia)
File added: TEMP/NARF (6ª copia)
File added: TEMP/NERF (copia) (otra copia)
File added: TEMP/NERF (4ª copia)
File added: TEMP/NERF (otra copia)
File added: TEMP/NERF (3ª copia)
File added: TEMP/NERF (6ª copia)
File added: TEMP/NERF (copia)
File added: TEMP/NERF (5ª copia)
File added: TEMP/NARF (8ª copia)
File added: TEMP/NARF (3ª copia)
File added: TEMP/NARF (5ª copia)
File added: TEMP/NERF (copia) (3ª copia)
File added: TEMP/NARF
File added: TEMP/NERF (copia) (copia)
File added: TEMP/NERF (8ª copia)
File added: TEMP/NERF (7ª copia)
File added: TEMP/NARF (copia)
File added: TEMP/NARF (otra copia)
File added: TEMP/NARF (4ª copia)
File added: TEMP/NERF
File added: TEMP/NARF (copia) (3ª copia)
Как вы можете видеть, он работает, архив тоже в порядке. Это рекурсивная функция, которая может застегивать всю папку. Единственная проблема заключается в том, что она не создает пустую папку.
Приветствия.
В предупреждении говорится: «Если ваше приложение имеет географические ограничения, эти изменения в v2.10 затронут вас» - оно основано на примере вызовов API вашего приложения и сравнении тех вызовов, для которых вызовы имеют предстоящие изменения
Если у вас нет ограничений, вы можете игнорировать это предупреждение.
Обратите внимание, что второй добавленный вами снимок экрана не отображается, если у вас включены географические ограничения, он показывает, если вы уже включили поведение, о котором вас предупреждает первое предупреждение.
Вы можете увидеть, включены ли географические ограничения в настройках приложения, вкладка «Дополнительно», снимок экрана:
. Если у вас настроены ограничения, вы нужно либо начать выполнять вызовы API с параметром appsecret_proof
, либо принять, что для некоторых пользователей ваши вызовы перестанут работать, если пользователь не соответствует настроенным ограничениям