我试图更多地使用Python,我知道这不是最好的用例,但它让我困扰为什么我无法让它工作。
我目前正在使用Python 2.7.6,我希望捕获一个文件,然后根据正则表达式从中提取特定的字符串。下面的代码适合我想要的,但只看第一行。
cat /tmp/blah.txt | python -c "import re,sys; m = re.search('Host: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*OS:(.*) Seq:', sys.stdin.read()); print m.group(1), m.group(2)"
所以我假设我可以使用for循环或fileinput读取整个文件,然后将其余的代码放在那里,但我继续使用for循环获取错误。
cat /tmp/blah.txt | python -c "import sys; for line in sys.stdin: print line" File "<string>", line 1
import sys; for line in sys.stdin: print line
^
SyntaxError: invalid syntax
我尝试了一些这方面的变化,但无法让它发挥作用。它总是在for部分说无效语法。我知道它必须是非常愚蠢/明显我正在做的事情,但任何帮助都会受到赞赏。
如果我创建了一个名为arg.py的程序并将下面的代码放入其中并通过cat调用Python,那么它可以正常工作。它只是一个不起作用的衬里部分。
import sys
for line in sys.stdin:
print line
答案 0 :(得分:2)
不幸的是,在if, for
之类的python中引入缩进的构造不允许在其他语句之前。
即使在您的arg.py文件中,也请尝试以下操作:
import sys; for line in sys.stdin: print line
您会发现语法也无效,导致同样的错误。
所以,回答你的问题,你的问题不在于你在终端中运行程序,但问题在于python语法本身。它不支持这种语法 查看相关的question