Python 使用块访问外部的值
在下面的代码中,是否有一种方法可以使用-块访问Python 使用块访问外部的值,python,with-statement,Python,With Statement,在下面的代码中,是否有一种方法可以使用-块访问外部的变量话语?下面的代码显然返回了错误:ValueError:对关闭的文件执行I/O操作。 from csv import DictReader utterances_dict = {} utterance_file = 'toy_utterances.csv' with open(utterance_file, 'r') as utt_f: utterances_dict = DictReader(utt_f) for line i
外部的变量话语
?下面的代码显然返回了错误:ValueError:对关闭的文件执行I/O操作。
from csv import DictReader
utterances_dict = {}
utterance_file = 'toy_utterances.csv'
with open(utterance_file, 'r') as utt_f:
utterances_dict = DictReader(utt_f)
for line in utterances_dict:
print(line)
我不是DictReader
实现方面的专家,但是,在构建文件之后,让读者自己解析文件,就可以实现它。这意味着在您使用完基础文件之前,它可能必须保持打开状态。在这种情况下,尝试在with
块之外使用语句
是有问题的,因为此时基础文件将被关闭
即使当前的DictReader实现实际上在构建时解析了整个csv,但这并不意味着它们的实现将来不会改变。DictReader
返回csv文件的视图
将结果转换为字典列表
from csv import DictReader
utterances = []
utterance_file = 'toy_utterances.csv'
with open(utterance_file, 'r') as utt_f:
utterances = [dict(row) for row in DictReader(utt_f) ]
for line in utterances:
print(line)
你为什么要在外面用它?只要把你的for循环放到结构中就行了?我知道在这种情况下该怎么做。但是实际的程序是多方面的:定义一个函数,在该函数中使用,然后返回你想要的,使用返回的data@Ruli-这可能奏效;我会好好玩玩的。谢谢