正在写入文件Next Lin

2024-04-24 07:50:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个文件中提取数字,给它们分配一个变量名,对这个变量做一些数学运算,然后写入文件的下一行。例如,如果我有一个包含:1 2 3 4 5的文件,下面是我目前为止的缩写代码(Python3.3)。我唯一的问题是把计算结果写在下一行。提前谢谢你的帮助。在

with open('test.txt', 'r') as f:
     read_data = f.read()
     a1 = (read_data[0])`a1 = (read_data[0])
print(a1) # this is just a test to see whats happening
f.close()
with open('test.txt','w') as f:
    f.write(a1) #how do I get a1  to write on the next line of the file 
exit()

Tags: 文件theto代码testtxtreaddata
3条回答

假设您的输入文件看起来像

04 80 52 67

,以下代码起作用:

^{pr2}$

编辑:您还可以将f.write("%s\n" % ''.join(element))替换为f.write(element+'\n'),并按照@Torxed的建议删除f.close()。在

with open('test.txt', 'r') as f:
    data = f.read()
with open('test.txt', 'w') as f:
    for line in data.split('\n'):
        a1 = line # You didn't specify what modifications you did with the data so...
        f.write(line + '\n')
        f.write(a1 + '\n')

另外请注意,我遗漏了f.close(),因为您不需要它。
忘记它的名称(上下文管理器旁边的另一个花哨的词),但是with是一个自动结束语句,每当您离开块f时,Python会自动调用{}。在

既然你没有写下你想做什么样的计算,下面是一个虚构的例子:

^{pr2}$

另外,从下一行提到的示例中阅读,但是您没有指定数据是否已经被行分隔,因此从djas得到的答案可以合并为:

with open('test.txt', 'r') as f:
    data = f.read()
with open('test.txt', 'w') as f:
    for line in data.split():
        a1 = int(line)*100
        f.write(line + '\n')
        f.write(str(a1) + '\n')

with open自动关闭文件,因此您可以在with open语句中执行程序的主逻辑。例如,此程序将执行您需要的操作:

with open('test.txt', 'r') as f:
  lines = f.readlines()
newlines = []
for line in lines:
  newlines.append(line)
  newline = #do some logic here
  newlines.append(newline)
with open('test.txt','w') as f:
  for line in newlines:
    f.write(line + '\n')

如果只有一行,则可以消除for line in lines:循环并直接修改文件。在

另一方面,如果您希望这是一个迭代过程,如其中一个问题的注释所示,也就是说,您希望新的第二行成为新的第一行,依此类推,您可以将上面的内容放在某个函数中,如下所示:

^{pr2}$

相关问题 更多 >