在Python中与一起使用时的语法无效

在Python中与一起使用时的语法无效,python,python-3.x,Python,Python 3.x,以下代码打开文件搜索单词或短语,然后在数组中打开文件,然后在单词或短语后添加两个新对象,然后将其重新写入文件,with语句不起作用,编译时会生成语法错误,表示file=open(…)“=”无效,但它是赋值运算符。帮忙 def edit(file_name,search_parameters,added_data,second_data): with(file = open(file_name,'r')): lines = list(file) file.

以下代码打开文件搜索单词或短语,然后在数组中打开文件,然后在单词或短语后添加两个新对象,然后将其重新写入文件,with语句不起作用,编译时会生成语法错误,表示file=open(…)“=”无效,但它是赋值运算符。帮忙

def edit(file_name,search_parameters,added_data,second_data):

    with(file = open(file_name,'r')):
        lines = list(file)
        file.close()
    linenum = (num for (num,line) in enumerate(lines) if search_parameters in line).next()
    lines[linenum+1] = added_data
    lines[linenum+1] = second_data

    with (file2 = open(file_name,"w")):
        file2.writelines(line + '\n' for line in lines)
        file2.close()

您需要将
用作
关键字:

with open(file_name,'r') as file:

with open(file_name,"w") as file2:
这里有一个关于的参考资料


此外,这两条线是不必要的:

file.close()

file2.close()

使用with语句打开文件将使其在with语句的代码块退出时自动关闭。事实上,这是使用with语句打开文件的唯一原因。

您需要使用
as
关键字:

with open(file_name,'r') as file:

with open(file_name,"w") as file2:
这里有一个关于的参考资料


此外,这两条线是不必要的:

file.close()

file2.close()

使用with语句打开文件将使其在with语句的代码块退出时自动关闭。事实上,这是使用with语句打开文件的唯一原因。

同样值得注意的是,OP不需要显式关闭文件。也许需要对
with
语句进行解释。@AlexThornton-好主意,我错过了。让我提一提,同样值得注意的是OP不需要显式关闭文件。也许需要对
with
语句进行解释。@AlexThornton-好主意,我错过了。让我提一下,在python中,赋值是一个语句,而不是运算符。在python中,赋值是语句,而不是运算符。它不返回值。