编辑并保存文件

时间:2014-03-26 01:32:56

标签: python file

我需要编辑我的文件并将其保存,以便我可以将其用于其他程序。首先,我需要把#34;,#34;在每个单词之间并在每一行的末尾添加一个单词。

为了放置","在每个单词之间,我使用了这个命令

for line in open('myfile','r+') :
    for word in line.split():
        new = ",".join(map(str,word)) 
        print new 

我不太确定如何覆盖原始文件,或者可能为编辑后的版本创建新的输出文件。我试过这样的事情

with open('myfile','r+') as f:
    for line in f:
        for word in line.split():
             new = ",".join(map(str,word)) 
             f.write(new)

输出不是我想要的(与print new不同)。 其次,我需要在每一行的末尾添加一个单词。所以,我试过这个

source = open('myfile','r')
output = open('out','a')
output.write(source.read().replace("\n", "yes\n"))

添加新单词的代码完美无缺。但我认为应该有一种更简单的方法来打开文件,一次完成两次编辑并保存。但我不太清楚如何。我花了很多时间来弄清楚如何覆盖文件,以及我寻求帮助的时间

3 个答案:

答案 0 :(得分:0)

这个档案有多大? 也许您可以创建一个临时列表,其中只包含您要编辑的文件中的所有内容。每个元素都可以代表一行。 编辑字符串列表非常简单。 更改后,您可以使用

再次打开文件
writable = open('configuration', 'w')

然后使用

将更改的行放到文件中
file.write(writable, currentLine + '\n')

。 希望有所帮助 - 甚至一点点。 ;)

答案 1 :(得分:0)

你走了:

source = open('myfile', 'r')
output = open('out','w')
output.write('yes\n'.join(','.join(line.split()) for line in source.read().split('\n')))

一衬垫:

open('out', 'w').write('yes\n'.join(','.join(line.split() for line in open('myfile', 'r').read().split('\n')))

或更清晰:

source = open('myfile', 'r')
processed_lines = []
for line in source:
    line = ','.join(line.split()).replace('\n', 'yes\n')
    processed_lines.append(line)
output = open('out', 'w')
output.write(''.join(processed_lines))

修改 显然我误读了一切,哈哈。

#It looks like you are writing the word yes to all of the lines, then spliting
#each word into letters and listing those word's letters on their own line? 
source = open('myfile','r')
output = open('out','w')
for line in source:
    for word in line.split():
        new = ",".join(word)
        print >>output, new
    print >>output, 'y,e,s'

答案 2 :(得分:0)

对于第一个问题,你可以在覆盖f之前读取f中的所有行,假设在' r +'中打开了f。模式。将所有结果附加到字符串中,然后执行:

f.seek(0)    # reset file pointer back to start of file
f.write(new) # new should contain all concatenated lines
f.truncate() # get rid of any extra stuff from the old file
f.close()

对于第二个问题,解决方案类似:读取整个文件,进行编辑,调用f.seek(0),编写内容,f.truncate()和f.close()。