【问题标题】:Overwrite variable to file in python [closed]在python中将变量覆盖到文件[关闭]
【发布时间】:2014-05-29 16:40:48
【问题描述】:

我定义了一个生成一些名称的函数并从循环中运行:

output = open('/tmp/NameGen-output.txt', 'w')
while True:
     var = NameGen(name)
      .
      .
      .
       if sth:
            output.write(var)
       elif other:
            output.write(var)
            break
       else:
            break
output.close()

更新:

第一次迭代,NameGen-output.txt的内容:

a
b
c

第二次迭代:

a
b
c
d
e

等等

所以如果我覆盖它,第二次迭代将是:

d
e

我要问的是:

如您所见,var 等于 NameGen(),并且对于每次迭代,var 的内容都被写入 NameGen-output.txt,但我想将 NameGen() 的每次迭代的输出覆盖到 NameGen-output.txt,而不是附加到它。

你能帮帮我吗?

谢谢

【问题讨论】:

  • 很难理解你想要完成什么,你能展示一些预期的输出吗?
  • 很简单:该函数在每次迭代中生成名称,并将其写入该文件。对于下一次迭代,它有一些重复的名称,然后将它们附加到文件中,我想为每次迭代覆盖以解决该问题
  • 好的,我更新了我的问题,谢谢
  • 你使用中间文件吗?如果你不这样做(而且看起来不像你),你不能在退出循环后写吗?将临时变量保存在数组中,然后 files.writelines(thatarray)
  • 感谢您对您的评论 +1,但就我而言,我认为如果我不使用数组会更好。

标签: python file loops


【解决方案1】:

您可以在不打开和关闭的情况下截断现有文件,并刷新以确保将其写入:

output = open('/tmp/NameGen-output.txt', 'w')
while True:
    var = NameGen()
    .
    .
    .
    if not sth and not other:
         break
    else:
         output.flush()
         output.seek(0)
         output.truncate()
         output.write(var)
         output.flush()
         output.write(var)

         if other:
             break


output.close()

【讨论】:

  • +1 因为我认为这就是我想要的。请查看我的更新,并帮助我。谢谢
【解决方案2】:

您可以在循环内移动文件打开(注意:最好使用with 上下文管理器):

while True:
    var = NameGen()
    ...
    with open('/tmp/NameGen-output.txt', 'w') as output:
        output.write(var)
    ...
...

【讨论】:

  • 我的循环持续时间很长。这样做有意义吗?
  • @MortezaLSC 你的意思是运行一次迭代需要很长时间,还是迭代很长时间,或两者兼而有之?如果没有更多关于您正在使用该文件做什么的信息,就很难提供建议。
  • 好的,我更新了我的问题,谢谢
  • @MortezaLSC 没有回答我的问题,或者根本没有澄清太多。为什么要使用文件?文件处理是否占每个循环迭代持续时间的很大一部分?时间紧迫和/或您目前对需要多长时间有疑问?
  • 我认为每次迭代我打开文件并关闭它没有意义,我想要一次打开文件,当我的循环完成时我关闭它,非常感谢(我说的是解释关于循环的持续时间长,也许我不能先让你准确地知道,请原谅),我又更新了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 2017-12-21
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
相关资源
最近更新 更多