将文本插入行尾 python

Inserting text to end of line python

我想在循环内将一些文本附加到文本文件中特定行的末尾。 到目前为止,我有以下内容:

batch = ['1', '2', '3', '4', '5']
list = ['A', 'B', 'C']

for i in list:
    for j in batch:
        os.chdir("/" + i + "/folder_" + j + "/")

        file = "script.txt"
        MD = "TEXT"
        with open(file) as templist:
            templ = templist.read().splitlines()
        for line in templ:
            if line.startswith("YELLOW"):
                line += str(MD)

我是 python 的新手。你能帮忙吗?

编辑:我根据(很好的)建议更新了我的脚本,但它仍然没有改变我的台词。

这将进行字符串连接:

line += str(MD)

这里有一些 more documentation on the operators,因为 python 支持赋值运算符。 a += b 等同于:a = a + b。在 python 中,与在某些其他语言中一样,+= 赋值运算符执行:

Add AND assignment operator, It adds right operand to the left operand and assign the result to left operand

你说的大部分是对的,但正如你所指出的,字符串没有追加函数。在前面的代码中,您将字符串与 + 运算符组合在一起。你可以在这里做同样的事情。

batch = ['1', '2', '3', '4', '5']
list = ['A', 'B', 'C']

for i in list:
    for j in batch:
        os.chdir("/" + i + "/folder_" + j + "/")

        file = "script.txt"
        MD = "TEXT"
        with open(file) as templist:
            templ = templist.read().splitlines()
        for line in templ:
            if line.startswith("YELLOW"):
                line += str(MD)

如果您想修改文本文件,而不是将一些文本附加到内存中的 python 字符串,您可以使用标准库中的 fileinput 模块。

import fileinput

batch = ['1', '2', '3', '4', '5']
list = ['A', 'B', 'C']

for i in list:
    for j in batch:
        os.chdir("/" + i + "/folder_" + j + "/")

        file_name = "script.txt"
        MD = "TEXT"
        input_file = fileinput.input(file_name, inplace=1)
        for line in input_file:
            if line.startswith("YELLOW"):
                print line.strip() + str(MD)
            else:
                print line,
        input_file.close() # Strange how fileinput doesn't support context managers