调试需要控制台输入的Python代码

调试需要控制台输入的Python代码,python,debugging,pycharm,Python,Debugging,Pycharm,当需要控制台输入时,如何调试PyCharmIDE中的代码?例如,我有一段代码 # if the config already exists prompt what to do if pc and not self.prompt.ask_yesno('project_ovverride'): self.prompt.say('setup_abort') return 这打断了突出显示的行,由于无法提供控制台输入,

当需要控制台输入时,如何调试
PyCharm
IDE中的代码?例如,我有一段代码

        # if the config  already exists prompt what to do
        if pc and not self.prompt.ask_yesno('project_ovverride'):
            self.prompt.say('setup_abort')
            return

这打断了突出显示的行,由于无法提供控制台输入,我无法继续。目前,我对此进行了评论,但是,可能还有一种方法可以提供所需的控制台输入


多谢各位

如果您只是想在调试时通过
CLI
进行输入;您可以简单地使用
单步进入
,如下所示首先在运行配置下启用“使用控制台运行”

  • 在调试器中将选项卡更改为
    控制台
  • 单击
    进入
    ,直到您在控制台中看到问题
  • 根据需要输入答案
  • 单击
    继续
    ,或根据需要从调试器执行任何其他操作 如果您想通过在
    CLI
    中运行脚本进行调试,您需要在
    pdb
    (Python调试器)的行中查找一些内容。你可以读更多

    示例:

    (venv) $ python3 -m pdb my_example.py
    > /my_example.py(1)<module>()
    -> try:
    (Pdb) s
    > /my_example.py(2)<module>()
    -> a = 1 / 0
    (Pdb) s
    ZeroDivisionError: division by zero
    > /my_example.py(2)<module>()
    -> a = 1 / 0
    (Pdb) 
    
    我的示例.py

    try:
        pdb_test = 1 / 0
    except ZeroDivisionError:
        print('Argh stop it!')
    
    命令行:

    (venv) $ python3 -m pdb my_example.py
    > /my_example.py(1)<module>()
    -> try:
    (Pdb) s
    > /my_example.py(2)<module>()
    -> a = 1 / 0
    (Pdb) s
    ZeroDivisionError: division by zero
    > /my_example.py(2)<module>()
    -> a = 1 / 0
    (Pdb) 
    
    (venv)$python3-m pdb my_example.py
    >/my_example.py(1)()
    ->尝试:
    (Pdb)s
    >/my_example.py(2)()
    ->a=1/0
    (Pdb)s
    ZeroDivision错误:被零除
    >/my_example.py(2)()
    ->a=1/0
    (Pdb)
    

    上面显示的只是我使用
    s
    命令
    pdb
    执行
    步骤
    ——在文档中,您可以找到您可能需要使用的所有命令,包括
    继续
    等等。

    如果您使用的是Pycharm 2018.3或更高版本,您可以将输入重定向到文件。 顺便说一句,我还没有试过这个,但它应该很好用。

    首先,我们需要在PyCharm IDE的运行配置中设置
    使用Python控制台运行
    ,然后,我们可以在调试软件时将调试器窗口更改为控制台窗口。我提供了说明公式的截图

    现在,从调试器切换到控制台并提供所需的输入


    你的回答对我有帮助。谢谢。你的回答对我有帮助。谢谢。@Arefe如果您希望调试和修复的多次迭代,请使用此选项。这真的节省了时间。