Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AttributeError:\uuuu输入\uuuu;上下文管理器内部函数_Python_Function_File Handling_Attributeerror_Contextmanager - Fatal编程技术网

Python AttributeError:\uuuu输入\uuuu;上下文管理器内部函数

Python AttributeError:\uuuu输入\uuuu;上下文管理器内部函数,python,function,file-handling,attributeerror,contextmanager,Python,Function,File Handling,Attributeerror,Contextmanager,错误: def get_reply(file_name, input): import csv #error line with open(file_name, "r") as csv_f, csv.reader(csv_f, delimiter = ",") as csv_reader: return search(csv_reader, input) 为什么会发生此错误以及如何解决?在这种情况下,这个错误

错误:

def get_reply(file_name, input): 
    import csv
    #error line
    with open(file_name, "r") as csv_f, csv.reader(csv_f, delimiter = ",") as csv_reader:  
        return search(csv_reader, input)
为什么会发生此错误以及如何解决?在这种情况下,这个错误意味着什么?

非常感谢你的帮助,我对编程相当陌生

我将附加代码的其余部分作为上下文,这意味着通过查看csv文件[user_input,response]来处理对用户输入的回复

代码以这种方式编写,以便导入和重用


csv.reader
未实现
\uuuuuuuuuuuuuuuuu
\uuuuuuuuuuuu退出
方法。所以您不能将其用作上下文管理器(这是您使用
所做的)

以这种方式使用它:

def search(csv_reader, input) :
    for line in csv_reader:
        if input == line[0]:
            return line[1]

def get_reply(file_name, input): 
    import csv
    with open(file_name, "r") as csv_f, csv.reader(csv_f, delimiter = ",") as csv_reader:
        return search(csv_reader, input)

        
#Test execution                      
list1 = get_reply("csv_dataset.txt", input("Enter Input : "))  

若要将其用作上下文管理器,可以使用构建自己的包装器


csv\u reader不是一个上下文管理器,请在with语句中使用它也请参见。感谢您澄清我的疑问。没有理由将其设为上下文管理器:
csv。reader
只使用打开的文件对象,不负责确保其关闭。在发生except时,它也不会执行任何需要清理的操作(正如您的定义所表明的:在生成
csv.reader
实例之前或之后,您不会执行任何操作)。
def search(csv_reader, input) :
    for line in csv_reader:
        if input == line[0]:
            return line[1]

def get_reply(file_name, input): 
    import csv
    with open(file_name, "r") as csv_f, csv.reader(csv_f, delimiter = ",") as csv_reader:
        return search(csv_reader, input)

        
#Test execution                      
list1 = get_reply("csv_dataset.txt", input("Enter Input : "))  
def get_reply(file_name, input): 
    import csv
    with open(file_name, "r") as csv_f:
        csv_reader = csv.reader(csv_f, delimiter = ",")
        return search(csv_reader, input)
import csv
from contextlib import contextmanager


@contextmanager
def csv_reader(*args, **kwargs):
    yield csv.reader(*args, **kwargs)


with open(file_name, "r") as csv_f, csv_reader(csv_f, delimiter = ",") as reader:
    return search(reader, input)