一、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