当前位置: 首页 > 面试题库 >

在python中使用sys.stdin.readline()从cmd读取多行

姜兴业
2023-03-14
问题内容

我想在运行后从命令行输入我的输入

if __name__ == "__main__":
    data = list(map(int, sys.stdin.readline().split()))
    print(data)
    n, capacity = data[0:2]
    values = data[2:(2 * n + 2):2]
    weights = data[3:(2 * n + 2):2]

输入示例可以是:

2 40
20 2
30 3

我的问题是:
1)如何使用我的输入创建列表数据?
2)如何让Python知道我已经完成了输入,它应该执行其余的代码?


问题答案:

该问题的解决方案取决于您使用的操作系统
基本上,如果您想使用多行输入,则必须使用sys.stdin.read()代替sys.stdin.readline()。由于sys.stdin在Python中是类似文件的对象,因此该read()方法将一直读取到到达文件末尾为止。它以特殊字符EOF文件结尾)标记。在不同的操作系统上,有不同的发送方式。

在Windows上 :输入后
Ctrl+ Z,然后按Enter

2 10
20 2
30 3
^Z

在基于Unix的操作系统上 :输入后
Ctrl+ D。不需要Enter(我相信)

如果您想[2, 10, 20, 2, 30, 3]从输入中获取列表,就可以了。该split()方法按空格(空格,换行符等)分割。



 类似资料:
  • 我试图写一个方法: 打印一条消息(例如:“粘贴您的输入:”) 等待用户按enter键 读取粘贴的所有行,并将它们添加到一个字符串中 (空行可用于确定输入的结束。) 第一个syso执行打印部分,并且正确读取第一行,但是它永远不会退出while循环。为什么?必须有一个结局吗? 我已经看过以下网站,但都没有帮助: 如何在Java中读取多行输入 https://www.techiedelight.com/

  • 问题内容: 我正在尝试使用PySpark 2.4.0从Kafka读取avro消息。 spark-avro外部模块可以为读取avro文件提供以下解决方案: 但是,我需要阅读流式Avro消息。库文档建议使用 from_avro() 函数,该函数仅适用于Scala和Java。 是否有其他模块支持读取从Kafka流式传输的Avro消息? 问题答案: 您可以包括spark-avro软件包,例如使用(调整版本

  • 问题内容: 我有一个CSV文件,下面是其外观示例: 我知道如何读取文件并打印每列(例如- )。但是我真正想做的是读取行,就像这样,然后依此类推。 然后,我想将这些数字存储到变量中,以便稍后将它们总计(例如): 。那我可以做。 我将如何在Python 3中做到这一点? 问题答案: 您可以执行以下操作: 要么 : 编辑:

  • 问题内容: 我想比较使用Python和从读取的字符串输入的行数,并且震惊地看到我的C ++代码比等效的Python代码慢一个数量级。由于我的生锈,并且我还不是专家,所以请告诉我我做错了什么还是误解了什么。 (TLDR答案:包括以下声明:或仅使用fgets代替。 TLDR结果:一直滚动到我的问题的底部,然后查看表格。) C ++代码: 等同于Python: 这是我的结果: 我应该注意,我在Mac O

  • demo.yaml definitions.yaml文件数据 我想读取 yaml 文件及其折射数据。 输出结果={content':{application/json':{'schema':{'title':'YamlTitle','type':'object','properties':{'name':{'type':'string','minLength':10,'example':'GANE

  • 问题内容: 我想知道如何从单个文件夹中读取多个文件(无需指定文件名,只是它们是json文件)。 另外,有可能将它们转换为DataFrame吗? 能给我一个基本的例子吗? 问题答案: 一种选择是使用os.listdir列出目录中的所有文件,然后仅查找以’.json’结尾的文件: 现在,您可以使用pandas DataFrame.from_dict将json(此时为python字典)读入pandas数