fix argparse

This commit is contained in:
xincheng
2026-05-17 07:12:26 +08:00
parent 5c3e6adfcd
commit 26ecaac11e

16
main.py
View File

@@ -261,6 +261,16 @@ def print_usage():
print(" python main.py status 显示当前状态和磁盘用量") print(" python main.py status 显示当前状态和磁盘用量")
def _call_with_argv(func, argv):
"""调用子命令 main() 时临时隔离 sys.argv避免 argparse 读到外层命令。"""
old_argv = sys.argv[:]
try:
sys.argv = argv
return func()
finally:
sys.argv = old_argv
def main(): def main():
print("=" * 60) print("=" * 60)
print(" WeChat Decrypt") print(" WeChat Decrypt")
@@ -301,19 +311,19 @@ def main():
print("[*] 开始解密全部数据库...") print("[*] 开始解密全部数据库...")
print() print()
from decrypt_db import main as decrypt_all from decrypt_db import main as decrypt_all
decrypt_all() _call_with_argv(decrypt_all, ["decrypt_db.py", *sys.argv[2:]])
elif cmd in ("export", "all"): elif cmd in ("export", "all"):
print("[*] 开始解密全部数据库...") print("[*] 开始解密全部数据库...")
print() print()
from decrypt_db import main as decrypt_all from decrypt_db import main as decrypt_all
decrypt_all() _call_with_argv(decrypt_all, ["decrypt_db.py"])
print() print()
print("[*] 开始批量导出聊天记录...") print("[*] 开始批量导出聊天记录...")
print() print()
from export_all_chats import main as export_all from export_all_chats import main as export_all
try: try:
export_all() _call_with_argv(export_all, ["export_all_chats.py"])
except SystemExit: except SystemExit:
pass pass