【问题标题】:python3 get parameter from command terminal and print input outpython3从命令终端获取参数并打印输入
【发布时间】:2016-09-01 14:29:11
【问题描述】:
lines = []
for line in fileinput.input():
    lines.append(line)
    print(line, end='')

我的问题,我怎样才能让 2 进入程序并同时打印出 input.txt 的内容?到目前为止,它会得到 2 作为文件名并尝试将其作为文件打开,而不是像预期的那样。如图所示。

【问题讨论】:

  • sys.argv 是你的朋友。
  • 是的。但我无法获取 input.txt
  • 看来
  • input.txt 被重定向到标准输入流。 2 正在进入 argv
  • 但2现在也被视为文件名。但它只是一个 arg 像 -l of ls..

标签: python linux unix input


【解决方案1】:

input.txt 文件的内容可以使用 python 内部的sys.stdin 文件句柄来访问。 必须使用 sys.argv 数组访问参数。

这是一个示例脚本。

#!/usr/bin/python
import sys
arg=sys.argv[1] #take first argument
lines=[]
for line in sys.stdin:
  lines.append(line) # save line from stdin to the array. Watch out for memory usage.


print arg
print lines

【讨论】:

    【解决方案2】:

    @Eugene 已经在您的命令中指出:

    ./whale.py '2' < input.txt
    

    input.txt 被重定向到标准输入流。 2 去 进入 argv。

    您遇到的错误可能是因为您的脚本以某种方式认为argv[1] 是要打开的文件。

    试试这个:

    import sys
    print "this is sys.argv: {}".format(sys.argv[1])
    print "below is STDIN:"
    for line in sys.stdin:
        print line
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-30
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 2011-11-30
      • 2020-01-16
      • 2015-12-08
      相关资源
      最近更新 更多