【发布时间】:2021-10-03 08:43:51
【问题描述】:
我遇到了一行代码,它使用文件描述符从标准输入获取输入。
print(sum(1-2*('-'in s)for s in[*open(0)][1:]))
从文档here 我发现 file 是一个类似路径的对象,它给出要打开的文件的路径名(绝对或相对于当前工作目录)或文件的整数文件描述符被包裹。 (如果给定了文件描述符,则在关闭返回的 I/O 对象时将其关闭,除非 closefd 设置为 False。)
问题是,当我像这样在 bash 中运行它时
python3 -c "print(sum(1-2*('-'in s)for s in[*open(0)][1:]))"
除非我杀死它,否则我无法终止并退出执行。
你知道在这种情况下我如何关闭 IO 对象吗?
【问题讨论】:
-
你需要在标准输入上发送 EOF,没有理由杀死任何东西。
-
只是为了记录EOF==Ctrl-D。当我点击 ctl-c 时,我感到很愚蠢,这就是问题所在。