read-while循环与bash中的变量——在Python中等效?



目前正在重构一些旧代码,并希望将一些bash脚本转换为python。

我们用bash编写了一小部分功能,类似于:

var1=$1
var2=$2
var3=$3
while read var1 var2 var3; do
logic

老实说,我不确定我明白这是在做什么。我以前在文件的上下文中见过while read循环,但我不确定这里用这3个变量而不是文件发生了什么。

我想先了解一下这个while read到底在做什么,但是我没能在网上找到很多资源来解释变量上下文中的这个逻辑,我所看到的都是迭代实际文件的while read循环。

最后,我希望将此功能转换为python。对于类似Python功能的任何建议都将受到赞赏(仍然是Python的新手),但希望如果我能首先掌握上面的逻辑,我应该能够自己找到一些东西。

如果需要,可以提供有关while循环中逻辑的更多上下文:)

如有任何帮助,不胜感激

bash脚本从标准输入中读取每行,将其分成单词,并将单词分配给var1,var2, andvar3in order. It loops untilread '返回错误,通常发生在EOF。

大致等价的python代码是:

while True:
try:
var1, var2, var3 = input().split(maxsplit=2)
except EOFError:
break
# logic

maxsplit=2将使split()最多返回3个值。如果输入的单词超过3个,则所有剩余的单词将包含在最后一个单词中。这类似于read在输入单词多于变量时的工作方式。

如果输入少于3个单词,Python版本将无法工作。bash将给剩余的变量赋值一个空字符串,Python将报告一个错误。如果有必要,可以通过重新编码来解决这个问题。

最新更新