如何通过shell将多个输入传递到python脚本?

时间:2017-02-24 16:56:27

标签: python-3.x

我想在python脚本中输入一些字符串,这样我就可以在我的计算机上进行测试而不是http://www.ideone.com。但是我这样做的方式都是将字符串组合在一起,而不是将它们分成几行或单独的行。

我的python代码是0001.py

testCases = int(input())
Counter = 0
while Counter < testCases:

    Line = str(input())
    countTwo = 1
    for i in range(int(len(Line)/2)):
        if countTwo % 2 == 0:
            print(Line[i], end='')
        countTwo += 1
    print('\n', end='')

    Counter += 1

我正在尝试回复'5''你好''你好''你好''你好'| python3 001.py

2 个答案:

答案 0 :(得分:0)

尝试

echo -e "line1\nline2\nline3"

这是有效的,因为程序逐行输入。这个echo语句将输入分隔为线条,因此它的功能就像你想要的那样。

答案 1 :(得分:0)

现在编辑您已经提供了操作系统。

对于Linux,这是有效的(归功于@pteronewone,他也回答):

$ echo -e "5\nhello\nhello\nhello\nhello\nhello" | python3 001.py
e
e
e
e
e

对于Windows(留待此处以备将来参考),这是丑陋且效率低下但可行(Windows 7 cmd.exe shell):

C:\> (echo 5 & echo hello & echo hello & echo hello & echo hello & echo hello) | 001.py
e
e
e
e
e

(不确定你要完成的是什么,但这就是你的脚本输出的内容。)

其他一些建议:

将输入()包装在try / except中。在你的例子中,你只包括四个“你好”,但告诉它期望五个,所以它试图读取第五个输入,导致异常。

try:
    Line = str(input())
except:
    break

使用整数除法运算符//,因此您无需在float中从int转换回range()

for i in range(len(Line) // 2):