【问题标题】:python txt file edit using looppython txt文件使用循环编辑
【发布时间】:2021-10-23 03:49:36
【问题描述】:
for k in np.arange(200, 600, 5.5):
new_text_content = ''
with open(file_name, "r") as file:
    lines = file.readlines()
    m1 = lines[0]
    m2 = lines[1]
    n1 = '/OutputFile = '  + str(k) 
    n2 = '/BeamEnergy = ' + str(k) 
    #lines[0].writerow(m1)
    file.replace(lines[1], n2)

file.close()

我想改变第一行和第二行,比如 n1,n2 使用循环来改变值(k)。我怎样才能编辑我的代码? value(k) 一直在增加,直到 600 并中断。

【问题讨论】:

  • 将 for 循环放入 with 上下文管理器中。
  • 您的文件处于读取模式。我也会像你一样阅读文件并保存内容。但随后我会在上下文管理器之外进行修改。然后你可以再次打开你的文件,但在'w'模式下并将内容写入其中

标签: python loops for-loop readlines


【解决方案1】:

您可以将逻辑放入函数中,然后将 n1 或 n2 所需的任何值传递给函数。

所以使用这样的函数:

def your_loop(start, stop, interval):

    for k in np.arange(start, stop, interval):
    new_text_content = ''
    with open(file_name, "r") as file:
        lines = file.readlines()
        m1 = lines[0]
        m2 = lines[1]
        n1 = '/OutputFile = '  + str(k)
        n2 = '/BeamEnergy = ' + str(k)
        #lines[0].writerow(m1)
        file.replace(lines[1], n2)

然后你可以这样称呼它your_loop(200, 700, 5.5)。这将创建一个 numpy 数组,该数组从 200 开始,在 500 结束,间隔为 5.5。

请注意,正如其他人所指出的,您不需要关闭文件,因为这是由上下文管理器在这一行 with open(file_name, "r") as file: 中处理的。

【讨论】:

    【解决方案2】:

    首先,您不必对文件调用 close,这是自动完成的,因为您使用了 with 关键字。接下来,您应该使用"r+" 而不是"r" 打开文件。所以你可以给它写信。

    for k in np.arange(200, 600, 5.5):
        with open(filename, "r+") as file:
            lines = ['/OutputFile = '  + str(k) + "\n", '/BeamEnergy = ' + str(k) + "\n"]
            file.writelines(lines)
    

    【讨论】:

    • 欢迎来到 SO! OP 的问题是关于如何更改使用 arange 创建的循环,而不是关于如何关闭或打开文件。
    • 请再次检查,这实际上修复了您的代码。
    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多