python中sys模块中标准输入输出流stdin,stdout的使用与input,print的区别

一、sys.stdin标准输入流

1、sys.stdin.readline()

由print(list(line))可以见得,sys.stdin.readline()输入的内容自带'\n'。

因为sys.stdin.readline()和input()输入的数据类型都是str,故我将输入的内容通过print(list(line))强制转换为列表类型并输出该列表内容,可以看到由sys.stdin.readline()输入的哪个代码块中list(line)中最后一个字符为'\n',

sys.stdin.readline()输入一行内容后,按enter键盘会停止输入,与input()一样。

输入:

import sys
line = sys.stdin.readline()
print(line)
print(type(line))
print(list(line))

输出:

string
string

<class 'str'>
['s', 't', 'r', 'i', 'n', 'g', '\n']

进程已结束,退出代码为 0

而input()则不带'\n'。

输入:

line = input()
print(line)
print(type(line))
print(list(line))

输出:

string
string
<class 'str'>
['s', 't', 'r', 'i', 'n', 'g']

进程已结束,退出代码为 0

2、sys.stdin.readlines()

与sys.stdin.readline()不同的是,sys.stdin.readlines()可以连续输入多行数据,按enter键,键盘不会退出输入,按ctrl+d退出输入。

sys.stdin.readlines()的数据类型为列表类型,该列表中的元素是输入的每一行数据。

输入:

import sys
lines = sys.stdin.readlines()
print(type(lines))
print(lines)

输出:

09
08
00
^D
<class 'list'>
['09\n', '08\n', '00\n']

进程已结束,退出代码为 0

3、sys.stdin.read()

sys.stdin.readlines()不同的是,sys.stdin.read()的数据类型为str。

当直接输出sys.stdin.read()输入的内容,结果与sys.stdin.read()输入的内容一样。

当强制转换sys.stdin.read()输入的内容为列表类型时,列表中的元素是每一个字符。

输入:

import sys
lin = sys.stdin.read()
print(type(lin))
print(lin)
print(list(lin))

输出:

09
09
09
^D
<class 'str'>
09
09
09

['0', '9', '\n', '0', '9', '\n', '0', '9', '\n']

进程已结束,退出代码为 0

二、sys.stdout标准输出流

1、sys.stdout.write(string)

输入:

import sys
a = "string"
sys.stdout.write(a)
sys.stdout.write('A')
print(a)
print('B')

输出:

stringAstring
B

进程已结束,退出代码为 0

sys.stdout.write()输出不自动添加换行符'\n',下一个数据接着sys.stdout.write(string)输出数据后面显示,而print()后面自带'\n',下一个数据在下一行显示。

2、sys.stdout.writelines(sequence)

值得注意的是,sys.stdout.writelines(sequence)中sequence要填入字符串序列,否则会报错。

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

sys.stdout.writelines(sequence)这种方法不会自动换行,如果需要在每个字符串后换行的话,需要手动添加,除了我用的方法外,还可以使用jion()。

输入:

import sys
lines1 = ["1, 2, 3", "e", "w"]
sys.stdout.writelines(lines1)
sys.stdout.writelines('\n')

lines2 = ["1, 2, 3\n", "e\n", "w\n"]
sys.stdout.writelines(lines2)

输出:

1, 2, 3ew
1, 2, 3
e
w

进程已结束,退出代码为 0

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值