如何在脚本中读取stdin?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在脚本中读取stdin?相关的知识,希望对你有一定的参考价值。
import sys
def optimal_summands(n):
summands = []
sum = n
i = 0
while (sum > 0):
if 2*(i+1) < sum:
i+=1
summands.append(i)
sum-=i
else:
summands.append(sum)
sum=0
return summands
if __name__ == '__main__':
input = sys.stdin.read()
n = int(input)
summands = optimal_summands(n)
print(len(summands))
for x in summands:
print(x, end=' ')
我有一个问题,用我自己的输入运行它。我去我的终端打字
(ykp) y9@Y9Acer:~/practice$ python optimal_summands.py 15
没有任何反应。
我怎么能在自定义输入上运行自己的代码?这似乎应该很简单,但我还没有看到如何在文档中的任何地方执行此操作的示例。
答案
我相信你可能会追随sys.argv或更多功能,你可以选择argparse。
使用sys.argv
的示例
if __name__ == '__main__':
filename = sys.argv[0]
passed_args = map(int, sys.argv[1:]) # if you're expecting all args to be int.
# python3 module.py 1 2 3
# passed_args = [1, 2, 3]
使用argparse
的示例
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("n", type=int, help="Example help text here.")
args = parser.parse_args()
n = args.n
print(isinstance(n, int)) # true
您也可以使用argparse
为您的用户提供帮助,如下所示:
scratch.py$ python3 scratch.py -h
usage: scratch.py [-h] n
positional arguments:
n Example help text here.
optional arguments:
-h, --help show this help message and exit
以上不包括进口报表import sys
和import argparse
。 argparse
中的可选参数以双连字符作为前缀,如下所示,如python
文档中所示。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v", "--verbose", action="store_true",
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbose:
print("the square of {} equals {}".format(args.square, answer))
else:
print(answer)
如果您只是希望通过CLI获得输入;你可以选择使用input_val = input('Question here')
。
以上是关于如何在脚本中读取stdin?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Perl 中读取和写入大缓冲区到进程 stdin/stdout/stderr?