我的目标是编写一个用于从文本中提取URL的工作线程。问题是我甚至无法从STDIN读取数据。到目前为止我的实验:
└──> grep -i http: flashgot.log | python -c 'import sys; import re; for line in sys.stdin: print line'
File "<string>", line 1
import sys; import re; for line in sys.stdin: print line
^
SyntaxError: invalid syntax
└──> grep -i http: flashgot.log | python -c 'import sys; import re; x = [print line for line in sys.stdin]'
File "<string>", line 1
import sys; import re; x = [print line for line in sys.stdin]
^
SyntaxError: invalid syntax
中的一些建议
答案 0 :(得分:1)
我使用sys.stdout.write
代替print
grep -i http: flashgot.log | python -c 'import sys; import re; [sys.stdout.write("%s\n" % line) for line in sys.stdin]'
我认为问题不在于读取标准输入,而在于找到在一行上使用的正确语法。在尝试使用脚本时,看起来for
在单行语法中不能用作块,在列表生成器中print
也不行。
PS:在尝试单行功能时,我发现lambda
有时会派上用场。您可能会在以后的脚本中发现它很有用