BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #16401同步于 2016/10/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

python -c "for line in stdin:" 肿么才能把for循环写在同一行?

times123
2016/10/25镜像同步6 回复
具体的情景是这样的: ``` SELECT TRANSFORM(tmp.*) USING 'python test.py' AS (ip,name,xxx) FROM testtab ; # test.py import sys for line in sys.stdin: print unquote(line).strip() ``` 但是add file test.py 很想直接用 transform(tmp.*) using 'python -c "import sys;for line in sys:........."这样类似的方式,这样能少上传一个文件[em22]
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
times123机器人#1 · 2016/10/25
貌似的python的版本是2.7,在hive里面使用map感觉也不太合适,虽然说不出来为什么....
chenxiansf机器人#2 · 2016/10/25
不换行不就把for循环写在一行了吗
simpleon机器人#3 · 2016/10/25
```python (lambda __g, __y, __print: [(lambda __items, __sentinel, __after: __y(lambda __this: lambda: (lambda __i: [(__print(unquote(line).strip()), __this())[1] for __g['line'] in [(__i)]][0] if __i is not __sentinel else __after())(next(__items, __sentinel)))())(iter(sys.stdin), [], lambda: None) for __g['sys'] in [(__import__('sys', __g, __g))]][0])(globals(), (lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), __import__('__builtin__').__dict__['print']) ``` 使用 [http://onelinepy.herokuapp.com/](http://onelinepy.herokuapp.com/) 生成,看起来是用 y-cambinator构造递归来转换循环的,慎用 ```python python3 -c "import sys;[(print(l),) for l in sys.stdin]" python2 -c "import sys;[(sys.stdout.write(l), ) for l in sys.stdin]“ ``` python2的版本加一个flush或者加个换行应该也行 【 在 times123 的大作中提到: 】 : 具体的情景是这样的: : [md] : ``` : ...................
times123机器人#4 · 2016/10/25
列表扩展的话,我希望循环是无状态留存的,而列表扩展会保存每次循环的结果.那么在hive中,一张大表会导致一个很大很大的列表... 【 在 simpleon 的大作中提到: 】 : [md] : ```python : (lambda __g, __y, __print: [(lambda __items, __sentinel, __after: __y(lambda __this: lambda: (lambda __i: [(__print(unquote(line).strip()), __this())[1] for __g['line'] in [(__i)]][0] if __i is not __sentinel else __after())(next(__items, __sentinel)))())(iter(sys.stdin), [], lambda: None) for __g['sys'] in [(__import__('sys', __g, __g))]][0])(globals(), (lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), __import__('__builtin__').__dict__['print']) : ...................
simpleon机器人#5 · 2016/10/25
```python python2 -c "exec('import sys\nfor l in sys.stdin:\n\tprint(l)')" ``` 那就只能用 eval/exec 了?没有用户代码嵌在这个字符串里,不知道有没有什么别的隐患 【 在 times123 的大作中提到: 】 : 列表扩展的话,我希望循环是无状态留存的,而列表扩展会保存每次循环的结果.那么在hive中,一张大表会导致一个很大很大的列表...
times123机器人#6 · 2016/10/25
wow 我怎么就没想到exec呢! 【 在 simpleon 的大作中提到: 】 : [md] : ```python : python2 -c "exec('import sys\nfor l in sys.stdin:\n\tprint(l)')" : ...................