Python逐个字符换行输出
我想在一个文本或HTML文件中打印行并替换行中的单词,但我做不到,因为Python(2.7)是一个字符一个字符地读取文件。我哪里做错了呢?
这是我的代码和输出:
import sys
infile = open('filenmae').read()
for line in infile:
print line
我应该得到的输出(这里只显示第一行):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
我实际得到的输出:
<
!
D
O
C
T
Y
P
E
.
.
.
2 个回答
10
你正在遍历一个字符串,这样可以一个一个地获取字符。
不要一次性读取整个文件,而是直接遍历文件对象:
with open('filename') as infile:
for line in infile:
print line
我在这里也用了上下文管理器来处理文件(with open(..) as localname
);这样,Python会在你离开with
块时自动关闭文件。
遍历文件对象时,会根据需要读取行,这样就避免了一次性把整个文件都读到内存里。
另外一种方法是使用file.readlines()
方法,一次性读取文件的所有行:
infile = open('filename').readlines()
或者可以用str.splitlines()
来分割读取的数据:
infile = open('filename').read().splitlines()
3
你可以试试用 file.readlines()
,像下面这样:
infile = open('filename').readlines()
for line in infile:
print line
这个方法会逐行读取文件,而不是一个一个字符地读取。
输出: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">