python脚本卡在从标准输入中读取

汤玛士

由于某种原因,一个始终可以正常工作的脚本现在失败了:(我进行了调查,并将其缩减至最小限度,但仍然无法正常工作:

猫a.py:

import sys

for row in sys.stdin.readlines():
  print("hey")
  print(row)

测试:

>> cat b.csv
a,b,c
1,2,3

>> cat b.csv | python a.py
// hangs for ever, if I Ctrl+C:
for row in sys.stdin.readlines():
  KeyboardInterrupt

知道会发生什么吗?谢谢!

汤玛士

经过调查,它似乎与我使用的别名有关。

查看命令

因为我为python2和3使用了不同的库,

pythonpath2=/usr/local/lib/python2.7/site-packages
pythonpath3=~/Library/Python/3.6/lib/python/site-packages:/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages
alias p="unset PYTHONPATH; export PYTHONPATH=${pythonpath3}; python3.7"
alias p2="unset PYTHONPATH; export PYTHONPATH=${pythonpath2}; echo $PYTHONPATH; python"

因此,我想在终端中进行管道传递之前,先将管道传递到别名的最后一个命令中,然后进行更改以将其传递到别名的第一个命令中(未设置),从而使其无效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章