【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 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.argvprint(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的内容如下,
在这里插入图片描述
执行后,命令行输出如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/124391.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Axios post请求出现500错误

笔者在编写前端form表单传后端数据的时候,出现了以下问题 一、问题场景 当我用axios发送post请求的时候,出现了500错误 笔者找了很长时间错误,代码没问题,后端接口也没问题,后来发现问题出在实体类上了 当前端post请…

kr 第三阶段(三)调试器

调试框架 特点:事件驱动,事件响应。 Win32 程序是消息驱动响应的基址,而在调试器则是事件驱动响应,有事件则处理,无事件则去做别的事。 事件:整个调试框架是建立在异常的基础之上的基本单位。响应&#xf…

SpringBoot中使用拦截器

拦截器属于MVC中的内容 SpringBoot项目,引入web依赖即可 需要访问的控制器 拦截器第一步实现HandlerInterceptor接口 第二步实现WebMvcConfigurer接口,并重写addInterCeptors()方法,将自定义的拦截器注册 也就是说这里add进去拦截的请求,才会进入到prehandle方法,这里放行的请…

调用gethostbyname实现域名解析(附源码)

VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...&a…

一文拿捏分布式协调Redis客服端-Redisson

Redisson 1.介绍 Redisson - 是一个高级的分布式协调Redis客服端 , 专注于分布式系统开发,让用户可以在分布式系统中很方便的去使用Redis。 2.相关使用 1.加锁 //底层是lua脚本保证了加锁的原子性 // 一直等待获取锁,直到获取到锁为止! 默认锁的存活…

【多模态融合】TransFusion学习笔记(1)

工作上主要还是以纯lidar的算法开发,部署以及系统架构设计为主。对于多模态融合(这里主要是只指Lidar和Camer的融合)这方面研究甚少。最近借助和朋友们讨论论文的契机接触了一下这方面的知识,起步是晚了一点,但好歹是开了个头。下面就借助TransFusion论文…

一键智能视频语音转文本——基于PaddlePaddle语音识别与Python轻松提取视频语音并生成文案

前言 如今进行入自媒体行业的人越来越多,短视频也逐渐成为了主流,但好多时候是想如何把视频里面的语音转成文字,比如,录制会议视频后,做会议纪要;比如,网课教程视频,想要做笔记&…

第 4 章 串(图书关键字索引表实现)

1. 背景说明 需要从书目文件中获取其关键字及对应的书号索引 bookInfo.txt 005 Computer Data Structures 010 Introduction to Data Structures 023 Fundamentals of Data Structures 034 The Design and Analysis of Computer Algorithms 050 Introduction to Numerical Anal…

Audacity 使用教程:轻松录制、编辑音频

Audacity 使用教程:轻松录制、编辑音频 1. 简介 Audacity 是一款免费、开源且功能强大的音频录制和编辑软件。它适用于 Windows、Mac 和 Linux 等多种操作系统,适合音乐制作、广播后期制作以及普通用户进行音频处理。本教程将带领大家熟悉 Audacity 的…

【OSCAR开源产业大会分论坛】开源大模型走向何方?

再过俩月,ChatGPT 即将迎来推出一周年纪念日。作为开历史先河的 AI 大模型,ChatGPT 像一针猛戳进千行百业中枢神经的兴奋剂,在全球掀起空前绝后的 AI 军备竞赛热潮。 近一年来,我们看到 GPT-3.5 完成向多模态的 GPT-4 进化&#x…

AWS-Lambda之导入自定义包-pip包

参考文档: https://repost.aws/zh-Hans/knowledge-center/lambda-import-module-error-python https://blog.csdn.net/fxtxz2/article/details/112035627 简单来说,以 " alibabacloud_dyvmsapi20170525 " 包为例 ## 创建临时目录 mkdir /tmp cd ./tmp …

网络基础(了解网络知识的前提)

前言 在正式学习网络之前,我们需要了解的一些关于计算机网络的基本知识,本文主要阐述这些基本知识,带着大家一步一步迈进互联网网络的世界; 一、局域网与广域网的概念 在正式了解这些概念的前提是我们要搞懂网络出现的意义&#x…