【问题标题】:Skip first line with Python stdin?用 Python 标准输入跳过第一行?
【发布时间】:2023-03-23 13:15:01
【问题描述】:

我想从 python stdin 实现中读取行。到目前为止我有:

for line in sys.stdin:
    process line

但我想跳过提供的第一行。

Python 在使用 fileinput 实现时有一个方法,如果它是第一行则返回 true,否则返回 false

fileinput.isfirstline()

理想情况下,我可以去的 stdin 有类似的东西:

if sys.stdin.isfirstline():
     process(first line)
else:
     process everthing else

有没有办法做到这一点?

谢谢

【问题讨论】:

  • 你试过 sys.stdin.next() 跳过吗?这应该适用于 Python 3
  • @Eyrofire 这很有用,谢谢,但是您如何获得行号?我查了一下也没找到
  • 你可以使用for index, line in enumerate(sys.stdin): if index:

标签: python io stdin


【解决方案1】:

您可以使用enumerate 来跟踪行号:

for linenum, line in enumerate(sys.stdin):
    if linenum != 0:
        process line

【讨论】:

  • 应该只是if i,或者可能 if i != 0,但肯定不是身份测试,这让你依赖实习,一个实施细节。
  • @jonrsharpe 抱歉,我对 python 不够熟悉 - 什么是身份测试?这就像将两个对象相互比较,而if i != 0 比较两个基本对象还是什么?无论如何,谢谢,您和 Darrick Herwehe 的解决方案都解决了我的问题,谢谢
  • @Cole a is b 检查它们是否是同一个对象,而a == b 检查它们是否具有相同的值。尝试例如100 * 10 is 1000 与 100 * 10 == 1000。在这种情况下,if line: 也可以工作,因为 Python 将一个空的可迭代对象([]、"" 等)计算为False。
  • @jonrsharpe 你是对的。我经常在 Python 和 Applescript 之间跳来跳去,有时会忘记这在两种语言中的含义并不相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2017-09-21
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 2016-01-02
  • 2016-11-16
相关资源
最近更新 更多