我需要编辑我的文件并将其保存,以便我可以将其用于其他程序。首先,我需要把#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"))
添加新单词的代码完美无缺。但我认为应该有一种更简单的方法来打开文件,一次完成两次编辑并保存。但我不太清楚如何。我花了很多时间来弄清楚如何覆盖文件,以及我寻求帮助的时间
答案 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()。