Python中使用Anaconda的Jupyter如何调试带有命令行参数的程序?

比如:
import numpy as np
import argparse
import cv2

ap = argparse.ArgumentParser()
ap.add_argument("-i","–image",help=“path to the image file”)
ap.add_argument("-c","–coords",help=“comma seperated list of source points”)
args = vars(ap.parse_args())

print(args[“iamge”])
print(args[“coords”])
想运行这段代码,它需要指定-i 和 -c,但是不知道该如何输入进去这两个参数,哪位大婶知道吗
Python中使用Anaconda的Jupyter如何调试带有命令行参数的程序?


6 回复

没试过,想要调试可以打 log


在Jupyter里调试带命令行参数的程序,直接运行会报错,因为Jupyter环境没有提供命令行参数。这里给你两个最实用的方法:

方法1:使用sys.argv手动设置(推荐) 在你的代码开头,直接模拟命令行参数:

import sys

# 模拟命令行参数:python script.py arg1 arg2
sys.argv = ['script.py', 'arg1', 'arg2']

# 你的主程序代码
def main():
    if len(sys.argv) > 1:
        print(f"接收到的参数: {sys.argv[1:]}")
    else:
        print("没有参数")

if __name__ == "__main__":
    main()

方法2:使用argparse的parse_args() 如果你用的是argparse库,可以直接传参数列表:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--input', type=str, required=True)
parser.add_argument('--output', type=str, default='result.txt')

# 在Jupyter中直接指定参数
args = parser.parse_args(['--input', 'data.csv', '--output', 'output.txt'])

print(f"输入文件: {args.input}")
print(f"输出文件: {args.output}")

方法3:使用魔法命令%run(适合外部脚本) 如果代码在单独的.py文件里,可以在Jupyter单元格中运行:

%run your_script.py arg1 arg2

实际调试技巧: 我通常这样做:在代码里加个判断,如果是Jupyter环境就使用预设参数:

import sys

def get_args():
    # 检查是否在Jupyter中
    if 'ipykernel' in sys.modules:
        return ['预设参数1', '预设参数2']
    else:
        return sys.argv[1:]

args = get_args()
print(f"参数: {args}")

总结:直接在代码里模拟参数最省事。

jupyter notebook 是!输入命令
可以试试

插个楼顺便问下,我 annoconda 的 jupyter notebook 怎么改工作空间,我尝试网上的方法都不成功,都默认 c 盘根目录,一直变不了,难受

你可以试一下 http://blog.csdn.net/k7arm/article/details/73740092

这段代码启动的时候需要命令行的参数,不知道怎么把命令行的参数传给它去启动,不是 log 打印输出

多谢,我试试。

刚尝试了 pycharm,在里面找到了输入命令行参数的位置,目前先用这个 ide 来调试吧,也挺好用的。
设置的地方:

Run/Debug Configurations->Configurations->Script Parames

和 vs 类似,都不用输入程序名字,直接输入参数即可。
在命令行中需要输入 python hello.py -c 123 -d 333
则在上述地方直接输入 -c 123 -d 333 就行了

回到顶部