python上下文mngr打开文件
我在看一个文件,咬着行尾。我有这个密码python上下文mngr打开文件,python,Python,我在看一个文件,咬着行尾。我有这个密码 def strip_line(read_me=file_opened_for_reading): return (line.strip('\n') for line in read_me) with open('readme.txt', 'r') as file_opened_for_reading: stripped_lines = strip_line() [line for line in stripped_lines]
def strip_line(read_me=file_opened_for_reading):
return (line.strip('\n') for line in read_me)
with open('readme.txt', 'r') as file_opened_for_reading:
stripped_lines = strip_line()
[line for line in stripped_lines]
这不起作用,因为文件未打开
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in strip_line
ValueError: I/O operation on closed file
为了读取而打开的文件需要传递到strip行,这是有道理的,但我希望“read\u me”的默认设置会解决这个问题。我在使用这个关键字位时哪里出了问题?默认参数
file\u opened\u用于读取
是在第一次遇到def strip\u line
(并且只有一次!)时定义的,这是在您读取实际文件之前,因此strip\u line
永远不会“看到”您打开的文件(因此出现错误)
默认参数不应是可变的,请参阅或
编辑:
您可以将read\u me='readme.txt'
定义为默认参数,并在函数strip\u行
中打开文件
with open('readme.txt', 'r') as file_opened_for_reading:
lines = strip_line(file_opened_for_reading)
[line for line in lines]