如何逐行读取文件并处理
我需要读取一个JavaScript文件,然后通过SSH连接发送这个文件。这个文件是标准的Unix格式,每行的末尾都有一个换行符。我使用的是Python 2.76。
当我读取这个文件并打印出来时,每行只显示一个字符。我查看了这里类似的问题,但我遇到的情况和那些帖子说的完全不一样。
def slurpWorkerCode(filename):
file = open(filename, "r")
data = file.read().replace('\n', '')
return data
ecma = slurpWorkerCode("/devel/backup/list.aksh")
for line in ecma:
print line
输出:
<snip>
v
a
r
M
O
N
T
H
S
<snip>
我这样做是不是错了?
谢谢任何帮助。
2 个回答
2
问题出在这里:
data = file.read().replace('\n', '')
file.read()
会把整个文件当作一个大字符串返回。如果你想把这个字符串分成一行一行的列表,可以用 .split('\n')
,不过这样做有点麻烦。
更标准的读取文件为行列表并去掉换行符的方法是:
def slurpWorkerCode(filename):
with open(filename, "r") as f:
return [line.rstrip('\n') for line in f]
生成器版本看起来是这样的:
def slurpWorkerCode(filename):
with open(filename, "r") as f:
for line in f:
yield line.rstrip('\n')
2
read()
这个函数会返回一个完整的字符串,所以 data
(也就是 ecma
)都是单个字符串。当你对一个字符串进行循环时,每次只能得到一个字符。我猜你真正想要的是
data = file.readlines()
这样 data
(也就是 ecma
)就会变成一个字符串的列表,每行一个字符串。