我正在尝试打印行并在text / 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
.
.
.
答案 0 :(得分:9)
您正在循环一个字符串,产生单个字符。
不要一次性读取文件,只需遍历文件对象:
with open('filename') as infile:
for line in infile:
print line
我也在这里使用该文件作为上下文管理器(with open(..) as localname
);现在,当退出with
块时,Python将自动为您关闭文件。
循环遍历文件对象会根据需要读取行,从而避免将整个文件读入内存。
其他替代方法是将文件一次性读取为file.readlines()
method:
infile = open('filename').readlines()
或将阅读数据与str.splitlines()
分开:
infile = open('filename').read().splitlines()
答案 1 :(得分:2)
您应该尝试file.readlines()
,如下所示:
infile = open('filename').readlines()
for line in infile:
print line
这会遍历每一行而不是文件中的每个字符。
Output: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">