98 lines
5.2 KiB
Python
98 lines
5.2 KiB
Python
#!/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()
|