Python 使用按键重复一个功能
我有一个备份脚本,它只是每天运行,并将文件备份到一个目录中(如果它们存在于源目录中,但不存在于目标目录中) 有时(很少)如果文件权限不正确,脚本会崩溃 我已经用Python 使用按键重复一个功能,python,python-2.7,keystroke,Python,Python 2.7,Keystroke,我有一个备份脚本,它只是每天运行,并将文件备份到一个目录中(如果它们存在于源目录中,但不存在于目标目录中) 有时(很少)如果文件权限不正确,脚本会崩溃 我已经用try/except块解决了这个问题 但是,我现在要做的是显示来自except块的错误消息,然后说 >>> Press Enter to re-run backup 然后让脚本重新运行复制过程,这是一个已定义的函数 因此,总结如下: 脚本运行 脚本抛出错误 用户按照错误消息中的说明操作 用户按“回车”键重新运行复制功能
try/except
块解决了这个问题
但是,我现在要做的是显示来自except
块的错误消息,然后说
>>> Press Enter to re-run backup
然后让脚本重新运行复制过程,这是一个已定义的函数
因此,总结如下:
如果这有什么不同的话,我正在运行windows(当我用谷歌搜索这个问题时,很多结果都与windows上的python有关)对我来说似乎很简单。您可以使用
raw\u input
让脚本等待回车键:
while True:
try:
# run the script
except SomeException as e:
# print the error message and recovery instructions
raw_input('Press Enter to re-run backup.')
您可以使用
raw\u input()
(或者如果使用Python 3,只需input()
)等待Enter
和一个条件变量来控制复制过程中的循环,直到成功
from sys import stderr
def run_backup():
print "running backup"
raise # this simulates an error
backup_completed = False
while not backup_completed:
try:
run_backup()
backup_completed = True
except:
print >> stderr, "Error message..."
raw_input(">>> Press Enter to re-run backup")
这将重新运行脚本。我想我理解您在错误等方面所写的内容。但在按enter键时,重复执行
run\u backup
,它将再次调用run\u backup()
。这不是预期的行为吗?这正是我想要的。我只是对python有点陌生,仍然在学习一些东西,所以我不是100%确定它能做到这一点。这很好:)正如您所看到的,run\u backup()
函数中的raise
就是用来模拟错误情况的。另外,如果这个答案是正确的,请接受它,这样它可能对其他人也有用。可能的重复不是重复。击键不是我问题的主要部分。更重要的是,在显示错误消息后,识别该击键以重新运行函数。尽管阅读此问题的人可能会发现该问题也很有用,谢谢。