在Python中调用read()函数两次

在Python中调用read()函数两次,python,Python,我想在二维网格世界中阅读,并将其转换为二维字符串列表 我使用open(“filename”)函数读取文件。 我的代码可以工作,但只要我用.read()函数打印出gridfile,它就不再工作了。输出是Gridworld和空列表(['')和 [['']]). 如果我删除print语句,它就可以正常工作 谁能给我解释一下为什么会这样?在调用.read()函数时,python似乎以某种方式“使用”了该文件,并且无法调用它两次 grid_file = open("3by4.grid") def tra

我想在二维网格世界中阅读,并将其转换为二维字符串列表

我使用open(“filename”)函数读取文件。 我的代码可以工作,但只要我用.read()函数打印出gridfile,它就不再工作了。输出是Gridworld和空列表(['')和 [['']]). 如果我删除print语句,它就可以正常工作

谁能给我解释一下为什么会这样?在调用.read()函数时,python似乎以某种方式“使用”了该文件,并且无法调用它两次

grid_file = open("3by4.grid")

def transform_to_lists(grid_file):

  ***print(grid_file.read())***


  onedim_list = grid_file.read().split('\n')

  twodim_list = [i.split(' ') for i in onedim_list]

  return twodim_list

print (transform_to_lists(grid_file))

您的print语句已经读取了整个文件,第二次尝试时没有其他内容可读取。如果需要先打印内容,然后进行分析,请将内容指定给变量

a = grid_file.read()
print (a)
onedim_list = a.split('\n')

....
使用
read()
将读取指针移动到文件末尾。您必须重新打开文件或使用
seek()
将其“倒带”。