python3 sys.stdout 方法,sys.exit方法,sys.stdin 方法

sys 模块

@(python3)

官方说明文档,python3.6 版本

sys.argv

argv 是 argument variable 参数变量的简写形式,在命令行调用的时候,有系统传递给程序。

import sys
print('打印第 2 到第 5 个元素:', sys.argv[1:5])
print('打印所有参数:', sys.argv[:])
for i in sys.argv:
    print(i)

在终端执行:

python3.6 sucre.py we are all auguments

# 结果如下打印第 2 到第 5 个元素: ['we', 'are', 'all', 'auguments']
打印所有参数: ['sucre.py', 'we', 'are', 'all', 'auguments']
sucre.py
we
are
all
auguments

argv[0] 是被调用的脚本的文件全名或全路径,argv[1]和一会的就是传入的数据

也可以在 Run > Configuration > Script parameters 里面写入默认的参数。在有默认参数的情况下,就不需要去命令行执行脚本,直接在 pycharm 里面执行即可。
Alt text

import sys

if __name__ = '__main__':
    print('sys.argv[0] = {0}'.format(sys.argv[0]))
print('sys.argv[0] = {1}'.format(sys.argv[1]))
print('sys.argv[0] = {2}'.format(sys.argv[2]))

sys.stdout.write

这个方法,调用的就是 file 对象的 write 方法,区别是 file 对象的 write 方法吧字符写入到文件中,sys.stdout.write 方法把字符写入到标准输出中,也就是控制台。

stdout.write 默认不换行,print 默认换行

import sys
print('print 默认换行')
sys.stdout.write('stdout.write 默认不换行')
print('+++++++++')

输出结果

print 默认换行
stdout.write 默认不换行+++++++++

stdout.write 配合 \n 换行符,可以实现换行的功能。

sys.stdout.write('str \n')

print 也可以实行不换行

print('str', end='')

和 print 的区别

print 几乎可以打印所有的对象,而 stdout.write 只能接受 str 类型。

import sys
class name():
    def __str__(self):
        return 'Citizen_Wang'
a = name()
print(a)
print(type(a))

sys.stdout.write(a)

此脚本会报错

TypeError: write() argument must be str, not name

解决方法:

sys.stdout.wirte(str(a))

从控制台重定向到文件

stdout 和 print 可以结合使用的案例。

import sys
file = sys.stdout    # 存储原始的输出对象
sys.stdout = open('1.txt', 'w')  # 重定向所有的写入内容到 1.txt 文件
print('Citizen_Wang')   # 写入到 1.txt 文件中
print('Always fall in love with neighbours')  # 继续写入到文件中
sys.stdout.close()    # 其实就是 open 文件之后的关闭
sys.stdout = file  # 将 print 命令的结果返回给控制台
print('输出信息返回在控制台')  # 该信息会在控制台也显示

在当前目录下创建了一个 1.txt 文件,内容如下:

Citizen_Wang
Always fall in love with neighbours

pycharm 控制台显示信息如下:

输出信息返回在控制台

同时重定向到控制台和文件

参考链接

sys.stdin

sys.stdin 和 input

import sys
print('Plase input your name: ')
name = sys.stdin.readline()
print('Hello ', name)

sys.exit([arg])

主程序退出的情况下使用,会引发一个异常:SystemExit,该异常并不派生自 Exception,所以用 Exception 无法捕获 SystemExit 异常,应该使用 SystemExit 捕获。

如果有捕获这个异常,直接退出程序,也可以捕获异常之后, 执行一些其他操作。

  1. 通过 Exception 无法捕获 SystemExit 异常
import sys
try:
    print('调用退出sys.exit方法之前,执行函数')
    sys.exit(0)
except Exception as a:
    print('information of SystemExit is {0}'.format(a))
    print('捕获到异常之后执行的代码')
finally:
    print('最终退出')

输出结果:

调用退出sys.exit方法之前,执行函数
捕获到异常之后执行的代码
最终退出
  1. python3 的 except 语句默认可以捕获 SystemExit ,不加任何参数即可。
import sys
try:
    print('调用退出sys.exit方法之前,执行函数')
    sys.exit(56)
    print('异常发生之后,不会执行这段代码')
except:
    print('捕获到异常之后执行的代码')
finally:
    print('最终退出')

输出结果:

调用退出sys.exit方法之前,执行函数
捕获到异常之后执行的代码
最终退出

3.捕获到 SystemExit 异常,并执行输出信息。sys.exit(‘information’)

import sys
try:
    print('调用退出sys.exit方法之前,执行函数')
    sys.exit('Goodbye!!!')
except SystemExit as a:
    print('information of SystemExit is {0}'.format(a))
    print('捕获到异常之后执行的代码')
finally:
    print('最终退出')

输出结果:

调用退出sys.exit方法之前,执行函数
information of SystemExit is Goodbye!!!
捕获到异常之后执行的代码
最终退出
  1. 没有捕获到 System 异常,输出信息之后,直接退出。
import sys
try:
    print('调用退出sys.exit方法之前,执行函数')
    sys.exit('Goodbye!!!')
except Exception as a:
    print('information of SystemExit is {0}'.format(a))
    print('捕获到异常之后执行的代码')
finally:
    print('最终退出')

输出结果:

调用退出sys.exit方法之前,执行函数
最终退出
Goodbye!!!
sys 模块是 Python 标准库中的一个内置模块,提供了与 Python 解释器和系统交互的功能。下面重点讲解 sys.exit() 和 sys.argv 的用法。 1. sys.exit() 函数: - sys.exit() 函数用于退出 Python 解释器,可以用来终止程序的执行。 - 该函数接受一个可选的整数参数作为退出状态码,0 表示正常退出,其他值表示异常退出。 - 示例: ```python import sys # 正常退出 sys.exit(0) # 异常退出 sys.exit(1) ``` 2. sys.argv 属性: - sys.argv 是一个包含命令行参数的列表,其中第一个元素是脚本文件的名称。 - 可以使用 sys.argv 来获取在命令行中传递给脚本的参数。 - 示例: ```python import sys # 通过命令行传递参数:python script.py arg1 arg2 script_name = sys.argv[0] # 脚本文件名称 arg1 = sys.argv[1] # 第一个参数 arg2 = sys.argv[2] # 第二个参数 ``` sys 模块还提供了其他一些方法和属性,例如: - sys.stdin:标准输入流,可用于从控制台读取输入。 - sys.stdout:标准输出流,可用于向控制台输出内容。 - sys.stderr:标准错误流,用于输出错误信息。 - sys.platform:运行 Python 解释器的平台名称。 - sys.version:Python 解释器的版本信息。 需要注意的是,在使用 sys 模块之前,需要先导入该模块:`import sys`。 通过 sys 模块,我们可以实现对 Python 解释器和系统的一些控制和交互操作,例如退出程序和获取命令行参数等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值