有关print()和input()的问题
红线标注的地方是什么意思,能解释一下吗(最好通俗易懂一些,我是新手) 这个学C++的懂的都懂flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
这个一般要和file配合使用
我们的输出流(人话:输出的地方)就是sys.stdout
那么我们可以把这个改成文件的形式
还有,这些都是很少用的内容(我学python几年都没有用过)
Q2:
标准输入流就是输入的地方
Q3:
文件结尾(英语:End of File,缩写为EOF),是操作系统无法从数据源读取更多数据的情形。数据源通常为文件或流。 计算机和人能够互动的也就是输入输出了
输入比较常见的也就是键盘鼠标一类的
输出则是打印机,显示器 wp231957 发表于 2022-10-24 18:40
计算机和人能够互动的也就是输入输出了
输入比较常见的也就是键盘鼠标一类的
输出则是打印机,显示器
? 标准输入流(sys.stdin):一个可读取的流,可以通过它来读取输入
标准输出流(sys.stdout):一个可写入的流,可以通过它来输出
示例:
>>> import sys
>>> sys.stdin.readline()
hello
'hello\n'
>>> sys.stdout.write("Hello\n")
Hello
6
>>>
1.指定要写入的文件对象,默认是标准输出流(sys.stdout)
这里的要写入的文件对象其实就是一个可写入的流,而这个流默认是标准输出流,所以我们才能用print来将字符输出到屏幕上
我们也可以指定file参数
示例:
print("Hello, World!",file=open("temp.txt","w"))
temp.txt内容
Hello, World!
这里我就将file参数指定为open("temp.txt","w")这个流
2.EOF
Windows下EOF是Ctrl+Z,Linux下Ctrl+D
Windows
>>> input()
^Z
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
EOFError
>>>
Linux(Ctrl+D没有显示)
>>> input()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
EOFError
>>> 本帖最后由 阿奇_o 于 2022-10-24 23:24 编辑
加来列夫马斯克 发表于 2022-10-24 20:30
?
学点Linux命令,以及各种重定向操作,然后你就应该懂得什么是 stdin 标准输入,stdout 标准输出了。 。
现在要在Window+Python的环境下说明白,有点费事,说个关键点吧:
print() 其实等价于或类似于: sys.stdout.write() 和 sys.stdout.flush()的组合。
能理解这两个,以及Buffer缓冲的概念, 就应该可以理解 print 的 file和flush的参数了。
举个例子:
import sys, time
sys.stdout.write('Hello')
sys.stdout.flush()# 手动刷出
sys.stdout.write('--->World')
time.sleep(3)
sys.stdout.flush() # 3秒后,才从缓冲里刷出来 (手动刷)
while 1: # 死循环
pass # 模拟,cmd的pause(不然不好观察上面的不同效果)
# 注意:程序结束前,或遇到\n换行符,或其他输出命令的“催促” 等情况,也会触发 flush()
# 注2:先只做脚本运行。 IDLE下会又涉及它自己的“回显命令”,也不好看效果。但关键还是上面这两个。
xiaosi4081 发表于 2022-10-25 08:40
这个学C++的懂的都懂
flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲 ...
所以缓冲区又是什么{:10_277:} 加来列夫马斯克 发表于 2022-10-25 09:09
所以缓冲区又是什么
就是存字符串的地方
页:
[1]