compress.py 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import glob
  2. import json
  3. import os
  4. import re
  5. import subprocess
  6. import sys
  7. import requests
  8. import platform
  9. import shutil
  10. import zipfile
  11. import urllib.request
  12. import py7zr
  13. def compress_folder_to_7z(folder_path, output_file):
  14. if os.path.exists(output_file):
  15. os.remove(output_file)
  16. with py7zr.SevenZipFile(output_file, 'w') as archive:
  17. archive.writeall(folder_path, output_file)
  18. def compress_folder_to_7z_split(folder_path, output_file):
  19. if os.path.exists(output_file):
  20. os.remove(output_file)
  21. file_name = os.path.basename(output_file)
  22. file_dir = os.path.dirname(output_file)
  23. # 获取文件名的前缀
  24. file_prefix = os.path.splitext(file_name)[0]
  25. # 构建分卷文件的路径模式
  26. split_file_pattern = os.path.join(file_dir, file_prefix + ".7z.*")
  27. # 获取匹配的分卷文件列表
  28. split_files = glob.glob(split_file_pattern)
  29. # 删除分卷文件
  30. for split_file in split_files:
  31. os.remove(split_file)
  32. # 压缩文件夹
  33. subprocess.call(["7z", "a", "-v95m", output_file, folder_path])
  34. easyspider_version = "0.3.5"
  35. if __name__ == "__main__":
  36. if sys.platform == "win32" and platform.architecture()[0] == "64bit":
  37. file_name = f"EasySpider_{easyspider_version}_windows_x64.7z"
  38. if os.path.exists("./EasySpider_windows_x64/user_data"):
  39. shutil.rmtree("./EasySpider_windows_x64/user_data")
  40. shutil.rmtree("./EasySpider_windows_x64/Data")
  41. shutil.rmtree("./EasySpider_windows_x64/config.json")
  42. shutil.rmtree("./EasySpider_windows_x64/mysql_config.json")
  43. shutil.rmtree("./EasySpider_windows_x64/execution_instances")
  44. os.mkdir("./EasySpider_windows_x64/Data")
  45. os.mkdir("./EasySpider_windows_x64/execution_instances")
  46. compress_folder_to_7z_split("./EasySpider_windows_x64", file_name)
  47. print(f"Compress {file_name} Split successfully!")
  48. compress_folder_to_7z("./EasySpider_windows_x64", file_name)
  49. print(f"Compress {file_name} successfully!")
  50. elif sys.platform == "win32" and platform.architecture()[0] == "32bit":
  51. file_name = f"EasySpider_{easyspider_version}_windows_x86.7z"
  52. if os.path.exists("./EasySpider_windows_x86/user_data"):
  53. shutil.rmtree("./EasySpider_windows_x86/user_data")
  54. shutil.rmtree("./EasySpider_windows_x86/Data")
  55. shutil.rmtree("./EasySpider_windows_x86/execution_instances")
  56. shutil.rmtree("./EasySpider_windows_x86/config.json")
  57. shutil.rmtree("./EasySpider_windows_x86/mysql_config.json")
  58. os.mkdir("./EasySpider_windows_x86/Data")
  59. os.mkdir("./EasySpider_windows_x86/execution_instances")
  60. compress_folder_to_7z("./EasySpider_windows_x64", file_name)
  61. print(f"Compress {file_name} successfully!")
  62. elif sys.platform == "linux" and platform.architecture()[0] == "64bit":
  63. file_name = f"EasySpider_{easyspider_version}_Linux_x64.7z"
  64. if os.path.exists("./EasySpider_Linux_x64/user_data"):
  65. shutil.rmtree("./EasySpider_Linux_x64/user_data")
  66. shutil.rmtree("./EasySpider_Linux_x64/Data")
  67. shutil.rmtree("./EasySpider_Linux_x64/execution_instances")
  68. shutil.rmtree("./EasySpider_Linux_x64/config.json")
  69. shutil.rmtree("./EasySpider_Linux_x64/mysql_config.json")
  70. os.mkdir("./EasySpider_Linux_x64/Data")
  71. os.mkdir("./EasySpider_Linux_x64/execution_instances")
  72. # compress_folder_to_7z("./EasySpider_Linux_x64", file_name)
  73. print(f"Compress {file_name} successfully!")
  74. elif sys.platform == "darwin" and platform.architecture()[0] == "64bit":
  75. pass