它在 VS Code 中运行良好,但在 powershell 中它会提示用户输入,但不会在“stdout”中显示字符串。这是示例代码:
import sys
def get_int():
sys.stdout.write("Enter number(s). ")
return map(int, sys.stdin.readline().strip().split())
def get_float():
sys.stdout.write("Enter number(s). ")
return map(float, sys.stdin.readline().strip().split())
def get_list_of_int():
sys.stdout.write("Enter numbers followed by space. ")
return list(map(int, sys.stdin.readline().strip().split()))
def get_string():
sys.stdout.write("Enter string. ")
return sys.stdin.readline().strip()
a, b, c, d = get_int()
e, f, g = get_float()
arr = get_list_of_int()
str = get_string()
Run Code Online (Sandbox Code Playgroud)
为什么在 Python 中使用 stdout 时 Powershell 无法显示字符串?
因为stdout设备接口可能会缓冲写入它,所以要么在无缓冲模式下运行 python:
PS C:\> python -u script.py
Run Code Online (Sandbox Code Playgroud)
或在读取之前显式刷新缓冲区stdin:
PS C:\> python -u script.py
Run Code Online (Sandbox Code Playgroud)
或者您可以替换sys.stdout为为您执行此操作的包装器:
def get_int():
sys.stdout.write("Enter number(s). ")
sys.stdout.flush()
return map(int, sys.stdin.readline().strip().split())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |