ai_member_xiaoban/export_learning_data.py
2026-03-05 00:00:02 +08:00

98 lines
5.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
用户学习行为数据导出封装脚本
支持命令行传参,无需修改原脚本变量
使用方式:
1. 导出单个角色python export_learning_data.py --role 14607
2. 导出多个角色python export_learning_data.py --role 14607 --role 14608 --role 14609
3. 导出单个账户python export_learning_data.py --account 2148
4. 导出多个账户python export_learning_data.py --account 2148 --account 2149 --account 2150
"""
import argparse
import os
import sys
import tempfile
# 原脚本路径
ORIGIN_SCRIPT = "business_knowledge/git_scripts/export_user_id_data.py"
def main():
parser = argparse.ArgumentParser(description='用户学习行为数据导出工具')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--role', action='append', type=int, help='角色ID可多次指定多个')
group.add_argument('--account', action='append', type=int, help='账户ID可多次指定多个')
args = parser.parse_args()
# 读取原脚本内容
with open(ORIGIN_SCRIPT, 'r', encoding='utf-8') as f:
content = f.read()
# 替换变量配置
if args.role:
if len(args.role) == 1:
# 单个角色
new_content = content.replace(
'USER_ID = None # 单个角色ID示例2911',
f'USER_ID = {args.role[0]} # 单个角色ID示例2911'
).replace(
'USER_ID_LIST = None # 角色ID列表示例[2911, 2912, 2913]',
'USER_ID_LIST = None # 角色ID列表示例[2911, 2912, 2913]'
).replace(
'ACCOUNT_ID_LIST = None # 5095[7232] # [1783,5375,5371,5345,5303,5293,5095,4289,4494,4473,4460,4452,4386,4388,4236,4043,2758,2841,2756,2750,2692,1781,1693,2256,2234,2373] # 账户ID列表示例[100, 101, 102]',
'ACCOUNT_ID_LIST = None # 5095[7232] # [1783,5375,5371,5345,5303,5293,5095,4289,4494,4473,4460,4452,4386,4388,4236,4043,2758,2841,2756,2750,2692,1781,1693,2256,2234,2373] # 账户ID列表示例[100, 101, 102]'
)
else:
# 多个角色
new_content = content.replace(
'USER_ID = None # 单个角色ID示例2911',
'USER_ID = None # 单个角色ID示例2911'
).replace(
'USER_ID_LIST = None # 角色ID列表示例[2911, 2912, 2913]',
f'USER_ID_LIST = {args.role} # 角色ID列表示例[2911, 2912, 2913]'
).replace(
'ACCOUNT_ID_LIST = None # 5095[7232] # [1783,5375,5371,5345,5303,5293,5095,4289,4494,4473,4460,4452,4386,4388,4236,4043,2758,2841,2756,2750,2692,1781,1693,2256,2234,2373] # 账户ID列表示例[100, 101, 102]',
'ACCOUNT_ID_LIST = None # 5095[7232] # [1783,5375,5371,5345,5303,5293,5095,4289,4494,4473,4460,4452,4386,4388,4236,4043,2758,2841,2756,2750,2692,1781,1693,2256,2234,2373] # 账户ID列表示例[100, 101, 102]'
)
else:
if len(args.account) == 1:
# 单个账户
new_content = content.replace(
'USER_ID = None # 单个角色ID示例2911',
'USER_ID = None # 单个角色ID示例2911'
).replace(
'USER_ID_LIST = None # 角色ID列表示例[2911, 2912, 2913]',
'USER_ID_LIST = None # 角色ID列表示例[2911, 2912, 2913]'
).replace(
'ACCOUNT_ID_LIST = None # 5095[7232] # [1783,5375,5371,5345,5303,5293,5095,4289,4494,4473,4460,4452,4386,4388,4236,4043,2758,2841,2756,2750,2692,1781,1693,2256,2234,2373] # 账户ID列表示例[100, 101, 102]',
f'ACCOUNT_ID_LIST = {args.account} # 5095[7232] # [1783,5375,5371,5345,5303,5293,5095,4289,4494,4473,4460,4452,4386,4388,4236,4043,2758,2841,2756,2750,2692,1781,1693,2256,2234,2373] # 账户ID列表示例[100, 101, 102]'
)
else:
# 多个账户
new_content = content.replace(
'USER_ID = None # 单个角色ID示例2911',
'USER_ID = None # 单个角色ID示例2911'
).replace(
'USER_ID_LIST = None # 角色ID列表示例[2911, 2912, 2913]',
'USER_ID_LIST = None # 角色ID列表示例[2911, 2912, 2913]'
).replace(
'ACCOUNT_ID_LIST = None # 5095[7232] # [1783,5375,5371,5345,5303,5293,5095,4289,4494,4473,4460,4452,4386,4388,4236,4043,2758,2841,2756,2750,2692,1781,1693,2256,2234,2373] # 账户ID列表示例[100, 101, 102]',
f'ACCOUNT_ID_LIST = {args.account} # 5095[7232] # [1783,5375,5371,5345,5303,5293,5095,4289,4494,4473,4460,4452,4386,4388,4236,4043,2758,2841,2756,2750,2692,1781,1693,2256,2234,2373] # 账户ID列表示例[100, 101, 102]'
)
# 写入临时脚本并执行
with tempfile.NamedTemporaryFile(mode='w', suffix='.py', encoding='utf-8', delete=False) as f:
f.write(new_content)
temp_path = f.name
try:
# 执行脚本
exit_code = os.system(f'python3 {temp_path}')
sys.exit(exit_code)
finally:
# 清理临时文件
os.unlink(temp_path)
if __name__ == '__main__':
main()