如何在Python脚本中暂停并等待命令输入

如何在Python脚本中暂停并等待命令输入,python,Python,在Python中是否可能有如下脚本 。。。 暂停 -> 等待用户在终端中执行一些命令(例如。 打印变量值、导入库或其他)。 如果用户没有输入任何内容,脚本将继续等待。 -> 继续执行脚本的其余部分 基本上,脚本将控制权暂时交给Python命令行解释器,并在用户以某种方式完成该部分后恢复 我的想法(受答案启发)如下: x = 1 i_cmd = 1 while True: s = raw_input('Input [{0:d}] '.format(i_cmd)) i_cmd += 1

在Python中是否可能有如下脚本

。。。
暂停
->
等待用户在终端中执行一些命令(例如。
打印变量值、导入库或其他)。
如果用户没有输入任何内容,脚本将继续等待。
->
继续执行脚本的其余部分
基本上,脚本将控制权暂时交给Python命令行解释器,并在用户以某种方式完成该部分后恢复


我的想法(受答案启发)如下:

x = 1

i_cmd = 1
while True:
  s = raw_input('Input [{0:d}] '.format(i_cmd))
  i_cmd += 1
  n = len(s)
  if n > 0 and s.lower() == 'break'[0:n]:
    break
  exec(s)

print 'x = ', x
print 'I am out of the loop.'

如果您使用的是Python2.x:
raw\u input()

Python3.x:
input()

例如:

# Do some stuff in script
variable = raw_input('input something!: ')
# Do stuff with variable

我想你正在寻找这样的东西:

import re

# Get user's name
name = raw_input("Please enter name: ")

# While name has incorrect characters
while re.search('[^a-zA-Z\n]',name):

    # Print out an error
    print("illegal name - Please use only letters")

    # Ask for the name again (if it's incorrect, while loop starts again)
    name = raw_input("Please enter name: ")

我知道最好的方法是使用pdb调试器。所以说

import pdb
在程序的顶部,然后使用

pdb.set_trace()
为了你的“暂停”

在(Pdb)提示下,您可以输入以下命令:

(Pdb) print 'x = ', x
您还可以逐步完成代码,尽管这不是您的目标。完成后,只需键入

(Pdb) c 
或单词“continue”的任何子集,代码将继续执行

2015年11月的调试器介绍非常简单,但是如果您在google上搜索“python调试器”或“python pdb”,当然会有很多这样的源代码。

等待用户输入“继续”: 输入函数实际上会停止脚本的执行,直到用户执行某项操作。下面的示例显示了如何在查看预先确定的感兴趣变量后手动继续执行:

var1 = "Interesting value to see"
print("My variable of interest is {}".format(var1))
key_pressed = input('Press ENTER to continue: ')
等待预定义时间后继续: 我发现另一个有用的例子是延迟,这样我就可以读取以前的输出,如果我想让脚本在一个合适的点终止,就决定Ctrl+C,但如果我什么也不做,就继续

import time.sleep
var2 = "Some value I want to see"
print("My variable of interest is {}".format(var2))
print("Sleeping for 5 seconds")
time.sleep(5) # Delay for 5 seconds
可执行命令行的实际调试器: 请参阅上面关于使用
pdb
单步执行代码的答案

参考:

只需按如下方式使用input()函数:

# Code to be run before pause
input() # Waits for user to type any character and
        # press Enter or just press Enter twice

# Code to be run after pause

谢谢,但也许我还不够清楚。我想要的是,脚本在某个点停止(在编写脚本时指定位置),然后将控制权交给解释器,以便用户可以执行他/她想要的任何操作,例如,打印某些内容、导入某些库,甚至完全退出整个脚本。这在一些用于科学计算的脚本语言(如IDL)中很常见,但我不确定在python中是否可行。我想RaWixInPUT()函数不能这样做吗?嗯,也许我可以使用Excor()来执行RWY-InPUT的返回字符串。HMM我不知道在脚本中间给用户完全解释解释器的方法。通过使用
eval()
函数,并使用该函数执行用户输入的任何内容,然后执行一些复杂的操作以保持其打开状态,您可能能够接近这一点。但是
input
确实读取并运行python代码!?只需将其放入一个循环中,并检查“退出”@我检查了那个文档,发现它使用了eval而不是exec,这意味着许多命令无法执行。例如,我不能“打印x”或“打印(x)”。无论如何,我认为我需要将输入或原始输入包装在一个无限循环中,并在用户输入诸如b[reak]之类的字符串时终止循环。有几点建议,包括
code.InteractiveInterpreter()
pdb
。这并不能真正回答问题。如果仔细阅读问题,OP希望暂停脚本,允许运行多个REPL命令,然后恢复脚本。这个解决方案只是暂停脚本。@MichaelKolber在我的第一篇博文之后,我更新了答案,以反映为什么我认为我的答案也有帮助(承认PDB的答案对特定情况来说是“最好的”,但同时也承认,大多数人,包括我在内,实际上都在寻找一种很好的暂停/等待python脚本的快速方法,问题的标题意味着这就是问题!)。这得到了投票最多的答案的支持,该答案也没有“回答”OP的情况,但也没有我提供的详细示例。干杯