22

是否可以在 Python 中有如下脚本?

...
Pause
->
Wait for the user to execute some commands in the terminal (e.g.
  to print the value of a variable, to import a library, or whatever).
The script will keep waiting if the user does not input anything.
->
Continue execution of the remaining part of the script

本质上,脚本暂时将控制权交给了 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.'
4

5 回答 5

36

如果您使用的是 Python 2.x:raw_input()

Python 3.x:input()

例子:

# Do some stuff in script
variable = raw_input('input something!: ')
# Do stuff with variable
于 2012-11-21T20:16:11.640 回答
8

我知道做到这一点的最好方法是使用 pdb 调试器。所以放

import pdb

在程序的顶部,然后使用

pdb.set_trace()

为你的“暂停”。

在 (Pdb) 提示符下,您可以输入命令,例如

(Pdb) print 'x = ', x

你也可以单步执行代码,尽管这不是你的目标。完成后只需键入

(Pdb) c 

或单词“继续”的任何子集,代码将恢复执行。

截至 2015 年 11 月,调试器的一个很好的简单介绍是Debugging in Python,但如果你用谷歌搜索“python debugger”或“python pdb”,当然有很多这样的来源。

于 2015-12-01T21:44:00.133 回答
2

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

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: ")
于 2014-06-16T19:39:49.447 回答
2

等待用户输入“继续”:

输入函数确实会停止脚本的执行,直到用户执行某些操作。这是一个示例,显示了在查看预先确定的感兴趣变量后如何手动继续执行:

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用于单步执行代码的答案

参考:Python 的 time.sleep() – 暂停、停止、等待或睡眠您的 Python 代码

于 2019-07-22T21:54:50.263 回答
1

只需使用 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
于 2020-07-04T02:37:55.153 回答