• 【python的输入】sys.stdin与sys.argv


    在老师的课堂里碰到了sys.stdin与sys.argv,虽然是很简单的东西,还是花了大半天的时间才勉强理解。在这里记录一下学习过程,方便以后用到复习。

    一、sys.stdin

    根据python3 library里的解释, sys.stdin可用于所有交互式的输入。
    代码底层的逻辑不懂,这里仅记录下该方法的使用:

    下面这段代码的意思是:导入sys模块,然后调用sys.stdin方法接收外部输入,将输入的每一行打印出来。

    >>> import sys
    >>> for line in sys.stdin:
    	print(line)
    
    • 1
    • 2
    • 3

    命令行或者python shell中执行以上代码,程序运行如下:
    在这里插入图片描述
    其中红框里黑色文字是键盘输入,蓝色文字是python shell的输出。

    如果想终止输入,使用 Ctrl+D 即可。(但是,在我的电脑里Ctrl+D似乎只在Python Shell里生效,在命令行里使用没效果,只能用Ctrl+C强制终止执行)
    在这里插入图片描述

    二、sys.argv

    “argv” 即 “argument value” 是一个列表对象,它可以允许你的程序从终端读取参数列表。通常用于让程序从终端读取文件名,而不是将其写入 Python 代码中。
    这篇代码里有对sys.argv读取默认文件夹中的文件信息的说明。如果在命令行使用sys.argv可参考如下操作:

    1. 写一个lec4_mystery.py文件,其中的代码如下。该程序的作用是通过sys.argv从命令行接收一个列表List,然后输出整个列表、列表的长度,以及列表的第一个元素。
    List = sys.argv
    
    print(List)
    print('Total argument passed: '+ str(len(List)))
    print('Name of Python script: '+ List[0])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 在命令行执行如下语句
    python lec4_mystery.py 2 3 5 6
    
    • 1

    输出如下:

    ['lec4_mystery.py', '2', '3', '5', '6']
    Total argument passed: 5
    Name of Python script: lec4_mystery.py
    
    • 1
    • 2
    • 3

    可知生成的列表里,第一个元素是是执行的python文件的文件名,后面才是输入的数据。

    另外,sys.argv也可用于在命令行接收输入的文件:

    1. 创建一个lec4_mystery.py文件,其中的代码如下。该程序的作用是通过变量myfile传入一个文档,依次读取文档的每一行,分词,并输出以"s"结尾的单词。
    myfile = sys.argv[1]
    for line in open(myfile, "r"):
        for w in line.split(" "):
            if w.endswith("s"):
                print (w)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 在命令行输入如下指令:
    python lec4_mystery.py lec4_trial_file.txt
    
    • 1

    其中,lec4_trail_file.txt的内容如下,
    在这里插入图片描述
    执行后,命令行输出如下:
    在这里插入图片描述

  • 相关阅读:
    LVGL介绍
    抖音步骤计划设置|成都聚华祥
    使用JAVA-api读取HDFS下文件内容,出现报错信息
    看了我的mybatis-plus用法,同事也开始悄悄模仿了
    会议OA项目之我的会议排座&批审功能
    【深度学习】卷积层填充和步幅以及其大小关系
    ansible角色部署haproxy实现站点轮询
    js返回的promise对象有值,为什么返回里面的值就为““了呢
    张丽俊:穿透不确定性要靠四个“不变”
    MySQL数据库表操作
  • 原文地址:https://blog.csdn.net/MilkLeong/article/details/133523106