从已打开的文本文件中读取一个字符串
从上述内容中,我们可以得出以下结论:
问题的原因是:在打开的文本文件中读取字符串时,我们可能需要将其分割成多行,而不是以字符为单位读取。
解决方法有两种:
1. 使用字符串的split()方法,将整个文件内容分割成多行。可以使用for循环逐行处理,代码如下:
contents = "file.txt" # 文件名 for line in contents.split('\n'): # do something
2. 使用文件对象的readlines()方法,将文件内容作为一个行的列表读入。可以使用for循环逐行处理,代码如下:
with open('file.txt','r') as fin: lines = fin.readlines() for line in lines: # do something
以上就是针对问题"Reading a string from an opened text file"的出现原因和解决方法的整理。
在这个问题中,出现的原因是读取一个已打开的文本文件中的字符串。第一个方法是逐行迭代文件。在这种情况下,整个文件数据不会一次性读入内存,而是只有当前行被读入内存。这对于处理非常大的文件非常有用,并且如果不知道文件是否很大,这也对健壮性有好处。
第二个方法中,file.read()
将完整的文件数据作为字符串返回。当你迭代它时,实际上是逐个字符迭代文件的数据。这会将整个文件数据读入内存。
下面是一个示例来展示这种行为。
a.txt
文件内容如下:
Hello Bye
代码:
>>> f = open('a.txt','r') >>> for l in f: ... print(l) ... Hello Bye >>> f = open('a.txt','r') >>> r = f.read() >>> print(repr(r)) 'Hello\nBye' >>> for c in r: ... print(c) ... H e l l o B y e
另外,第二种方法将整个文件读入内存,而第一种方法则是每次迭代一行。也就是说,第一种方法在内存使用上更高效,特别适用于大文件。
感谢,我也将这部分内容添加到我的答案中。