如何通过argparse将命令行参数传入导入的Python模块
实现步骤
1. 修改main.py的命令行参数解析逻辑
在原有argparse配置基础上,新增文件路径、列名等需要的参数,示例代码如下:
import argparse from my_folder.myscript import foo def main(): parser = argparse.ArgumentParser(description="处理Excel文件的脚本") # 保留原有的--test参数 parser.add_argument('--test', action='store_true', help="启用测试模式") # 添加Excel文件路径参数,设为必填 parser.add_argument('--infile', required=True, type=str, help="输入的Excel文件完整路径") # 添加列名参数,支持传入多个列名 parser.add_argument('--columns', nargs='+', required=True, help="需要处理的列名,可一次传入多个") # 解析命令行参数 args = parser.parse_args() # 将解析后的参数传递给foo函数 foo( infile_path=args.infile, column_names=args.columns, test_mode=args.test ) if __name__ == "__main__": main()
2. 调整my_folder/myscript.py中的foo函数
让foo函数接收从main.py传递过来的参数,替换原来的硬编码值:
def foo(infile_path, column_names, test_mode=False): # 这里编写你的业务逻辑,比如读取并处理Excel文件 print(f"测试模式状态: {test_mode}") print(f"待处理文件路径: {infile_path}") print(f"待处理列名列表: {column_names}") # 示例:读取Excel文件(需提前安装pandas) # import pandas as pd # df = pd.read_excel(infile_path) # for col in column_names: # print(f"列[{col}]的数据:\n{df[col]}")
3. 测试运行
现在可以通过以下命令执行脚本,参数会自动传递给foo函数:
python3 main.py --test --infile /file/path/filename.xlsx --columns name age email
如果不需要测试模式,直接去掉--test参数即可:
python3 main.py --infile /file/path/filename.xlsx --columns name age
内容的提问来源于stack exchange,提问作者newstudent
相关产品推荐
相关产品推荐

