如何在Jupyter Notebook中传递文件路径命令行参数测试Python脚本
在Jupyter Notebook中为argparse脚本传递命令行参数的正确方法
先修正代码中的关键错误
你的代码存在两处致命问题,会直接导致运行失败:
- 误用
os.chdir():os.chdir()是切换工作目录的函数,返回值为None,你将其赋值给Sp_Report和Report,后续的exists()检查会直接报错。应该直接使用argparse传入的Path对象:
同理,# 错误写法 Sp_Report = os.chdir(args.SP_File) # 正确写法 Sp_Report = args.SP_FileReport = args.File2,不要调用os.chdir()。 - 未定义变量:代码中
slicer_column_values、left_merged、Match_Values、start_date、end_date这些变量没有定义,需要补充后才能正常执行导出Excel的逻辑。
两种在Jupyter Notebook中测试argparse脚本的方法
方法一:手动模拟命令行参数(推荐)
在Notebook中直接修改sys.argv来模拟命令行输入,无需导出脚本。将原来的args = parser.parse_args()替换为以下代码:
import sys # 模拟命令行参数,格式:[脚本名, 参数1名, 参数1值, 参数2名, 参数2值, 位置参数值] sys.argv = [ 'Tractive_missing.py', '--SP_File', '/实际路径/file1.csv', '--File2', '/实际路径/csv2.csv', '/实际路径/输出目录' ] args = parser.parse_args()
然后直接运行整个代码单元格即可,这样就相当于在命令行执行了对应的参数传递。
方法二:导出为Py脚本后用%run运行
- 将你的代码保存为
.py文件(比如Tractive_missing.py) - 在Jupyter Notebook的单元格中使用
%run魔法命令传递参数,注意参数名要和代码中一致,且必填的位置参数Missing_Campaign_File要放在最后:
%run Tractive_missing.py --SP_File '/实际路径/file1.csv' --File2 '/实际路径/csv2.csv' '/实际路径/输出目录'
你原来尝试的错误点
- 不能用
python直接运行.ipynb文件,Python只能执行.py格式的脚本 - 参数名不匹配:代码中定义的是
--File2,你尝试时用了--Report2 - 缺少必填的位置参数
Missing_Campaign_File - 代码中误用
os.chdir()导致路径处理错误
内容的提问来源于stack exchange,提问作者Gagandeep
相关产品推荐
相关产品推荐

