如何逐行篡改文件和处理

时间:2014-07-29 13:53:58

标签: python python-2.7

我需要在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 个答案:

答案 0 :(得分: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')

答案 1 :(得分:1)

read()返回单个字符串,因此data(以及ecma)是单个字符串。迭代单个字符串时,一次只能获得一个字符。我怀疑你真正想要的是

data = file.readlines()

以便data(以及ecma)是一个字符串列表,每行一个字符串。