Excel(类ExcelOut) 2> CSV(类 CSVOut) 3> 标准输出(类 StdOut) 对于前两种输出类型,我希-6ren">
gpt4 book ai didi

Python - stdout 总是 "available"吗?

转载 作者:太空狗 更新时间:2023-10-29 12:03:24 29 4
gpt4 key购买 nike

我编写了一个 API,用户可以在其中将 sql 查询的输出定向到:

1>Excel(类ExcelOut)
2> CSV(类 CSVOut)
3> 标准输出(类 StdOut)

对于前两种输出类型,我希望用户提供一个文件位置,然后 API 检查该位置是否存在,也就是参数验证
对于标准输出,我想知道是否需要任何验证?即,在代码运行时,是否存在 API 的用户(开发人员)不知道 sys.stdout 不“可用”的情况?

最佳答案

stdout 不可写的原因有很多。以下是一些示例:

# 1. Run with stdout explicitly closed:
$ ./yourscript >&-

# 2. Run in the background and then closing the terminal
$ ./yourscript & exit

# 3. No space on the device (/dev/full simulates this for testing):
$ ./yourscript > /dev/full

# 4. Run with a pipe that closes immediately:
$ ./yourscript | true

# 5. Run with a pipe that closes after the first 10 lines:
$ ./yourscript | head -n 10

写入时,每个错误都包装在 Python IOError 中,Errno 设置为:

  1. EBADF(错误的文件描述符)

  2. EIO(输入/输出错误)

  3. ENOSPC(设备上没有剩余空间)

  4. EPIPE(破管)

  5. 前几个写入调用会成功,然后是 #4 中的 EPIPE(换句话说,工作一次并不意味着总是工作)。

虽然在开始写入之前尝试确定 stdout 是否有效(基本检查可以使用例如 os.fstat 完成)几乎没有用。大多数程序应该假定它可用,并优雅地处理故障。

关于Python - stdout 总是 "available"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266378/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com