【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)

在命令行或者python shell中执行以上代码,程序运行如下:
【python的输入】sys.stdin与sys.argv_第1张图片
其中红框里黑色文字是键盘输入,蓝色文字是python shell的输出。

如果想终止输入,使用 Ctrl+D 即可。(但是,在我的电脑里Ctrl+D似乎只在Python Shell里生效,在命令行里使用没效果,只能用Ctrl+C强制终止执行)
【python的输入】sys.stdin与sys.argv_第2张图片

二、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. 在命令行执行如下语句
python lec4_mystery.py 2 3 5 6

输出如下:

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

可知生成的列表里,第一个元素是是执行的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. 在命令行输入如下指令:
python lec4_mystery.py lec4_trial_file.txt

其中,lec4_trail_file.txt的内容如下,
【python的输入】sys.stdin与sys.argv_第3张图片
执行后,命令行输出如下:
【python的输入】sys.stdin与sys.argv_第4张图片

你可能感兴趣的:(python,windows,服务器)