从已打开的文本文件中读取一个字符串

10 浏览
0 Comments

从已打开的文本文件中读取一个字符串

我见过两种处理文件的方式:\n

file = open("file.txt")
for line in file:
    # 做一些操作
file = open("file.txt")
contents = file.read()
for line in contents:
    # 做一些操作

\n我知道在第一种情况下,文件会像一个列表一样,所以for循环会像遍历列表一样遍历文件。在第二种情况下,我们先读取文件,然后遍历contents,这样会发生什么?采用每种方法的后果是什么,我应该如何选择?

0
0 Comments

从上述内容中,我们可以得出以下结论:

问题的原因是:在打开的文本文件中读取字符串时,我们可能需要将其分割成多行,而不是以字符为单位读取。

解决方法有两种:

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"的出现原因和解决方法的整理。

0
0 Comments

在这个问题中,出现的原因是读取一个已打开的文本文件中的字符串。第一个方法是逐行迭代文件。在这种情况下,整个文件数据不会一次性读入内存,而是只有当前行被读入内存。这对于处理非常大的文件非常有用,并且如果不知道文件是否很大,这也对健壮性有好处。

第二个方法中,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

另外,第二种方法将整个文件读入内存,而第一种方法则是每次迭代一行。也就是说,第一种方法在内存使用上更高效,特别适用于大文件。

感谢,我也将这部分内容添加到我的答案中。

0