使用input()对已关闭文件进行I / O操作

时间:2018-06-07 22:42:38

标签: python-3.x input

我有代码,可以设置运行和记录科学实验的环境。一些初始设置涉及使用内置的input()方法来查询用户的值。每当我尝试调用输入时,我就会在关闭文件错误时继续进行I / O操作。 代码流:Control.py调用Analyzer.py,它调用Prompts.py中的特定方法(代码见下文)。

def prompt_instruments(message):
    res = input(message) # query user with arg message
    print("done")
    if '.' in res:
        print("User input not cool. Use comma-separated values.")
        return None # to continue prompting
...

我在互联网上搜索过,无法找到任何与之相关的内容。非常感谢你!!

1 个答案:

答案 0 :(得分:1)

您发布的代码似乎没问题,错误可能在您的其他文件中。

input()功能使用sys.stdout显示提示文字,使用sys.stdin获取用户的输入文字。

您收到的错误消息可能是由其中一个文件被关闭引起的,例如:

>>> import sys
>>> input('test: ')
test: hello
'hello'
>>> sys.stdin.close()
>>> input('test: ')
test: Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.

或:

>>> import sys
>>> input('test: ')
test: hi
'hi'
>>> sys.stdout.close()
>>> input('test: ')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.

我无法确切地告诉您解决此问题的确切位置,但要查找可能直接或间接关闭其中一个文件的内容(例如上下文管理器)。