我需要编辑我的文件并保存它,以便我可以在另一个程序中使用它。首先,我需要在每个单词之间加上",",并在每行的末尾加上一个单词。
为了在每个单词之间加上",",我使用了这个命令
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)
输出不是我想要的(与打印new不同)。其次,我需要在每一行的末尾加上一个单词。所以,我尝试了这个
source = open('myfile','r')
output = open('out','a')
output.write(source.read().replace("n", "yesn"))
添加新词的代码工作得很好。但我在想应该有一种更简单的方法来打开文件,一次编辑两次并保存它。但我不太确定怎么做。我花了大量的时间来弄清楚如何覆盖这个文件,现在是时候寻求帮助了
给你:
source = open('myfile', 'r')
output = open('out','w')
output.write('yesn'.join(','.join(line.split()) for line in source.read().split('n')))
一行程序:
open('out', 'w').write('yesn'.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', 'yesn')
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'
这个文件有多大?也许你可以创建一个临时列表,其中只包含你想要编辑的文件中的所有内容。每个元素可以代表一条线。编辑字符串列表非常简单。修改完成后,你可以用
打开你的文件writable = open('configuration', 'w')
,然后将更改的行放入
文件中file.write(writable, currentLine + 'n')
。希望这能帮到你,哪怕一点点。div;)
对于第一个问题,您可以在覆盖f之前读取f中的所有行,假设f以'r+'模式打开。将所有结果附加到字符串中,然后执行:
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()。