|
@@ -1,6 +1,7 @@
|
|
|
import argparse
|
|
|
from importlib import import_module
|
|
|
import sys
|
|
|
+import os
|
|
|
|
|
|
from crossborder.utils.log import get_logger
|
|
|
|
|
@@ -30,12 +31,28 @@ def run_province(name, year=None):
|
|
|
fake_argv.extend(['--year', str(year)])
|
|
|
|
|
|
sys.argv = fake_argv
|
|
|
- module.main()
|
|
|
+ # 调用模块main函数
|
|
|
+ if hasattr(module, 'main'):
|
|
|
+ module.main()
|
|
|
+ else:
|
|
|
+ log.error(f"❌ {name} 模块缺少main()入口函数")
|
|
|
|
|
|
except Exception as e:
|
|
|
log.error(f"❌ {name} 执行失败: {e}")
|
|
|
|
|
|
def main():
|
|
|
+ # 强制切换工作目录为exe所在目录
|
|
|
+ if getattr(sys, 'frozen', False):
|
|
|
+ # 打包后的exe路径
|
|
|
+ application_path = os.path.dirname(sys.executable)
|
|
|
+ else:
|
|
|
+ # 开发环境路径
|
|
|
+ application_path = os.path.dirname(os.path.abspath(__file__))
|
|
|
+ os.chdir(application_path)
|
|
|
+
|
|
|
+ if len(sys.argv) == 1:
|
|
|
+ sys.argv = ['run-crossborder.exe', '--all']
|
|
|
+
|
|
|
parser = argparse.ArgumentParser(description="跨省数据采集器")
|
|
|
group = parser.add_mutually_exclusive_group(required=True)
|
|
|
group.add_argument('--province', '-p', choices=PROVINCE_MODULES.keys(), help='指定省份')
|
|
@@ -44,11 +61,17 @@ def main():
|
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
+ # 如果没有指定参数,默认执行all
|
|
|
+ if not (args.province or args.all):
|
|
|
+ args.all = True
|
|
|
+
|
|
|
if args.province:
|
|
|
run_province(args.province, args.year)
|
|
|
elif args.all:
|
|
|
for name in PROVINCE_MODULES:
|
|
|
run_province(name, args.year)
|
|
|
|
|
|
+ log.info("数据采集全部执行完成!")
|
|
|
+
|
|
|
if __name__ == "__main__":
|
|
|
main()
|