python-3.x - 对于每一行 "for loop"无法在我的脚本中实现

标签 python-3.x loops for-loop replace line

我对 Python 完全陌生,目前我正在为大多数人的“简单”步骤而苦苦挣扎。

我的目标是将行从一个源文件复制并粘贴到目标文件。 但。目标文件应保留其前 12 行。在 12 行之后,它应该从源文件中获取所有行。到目前为止效果很好。我只需要设置最后一部分的线条。

所以我必须放入一个循环,就像“对于你找到的每一行替换它在目标文件中)

config_fstab = '# /etc/fstab: static file system information.'
einhaengepunkte_replace = '#Eigene_Einhaengepunkte'

with open(r'C:\Users\sample\Desktop\SCRIPTING02.txt') as input_header_stays:
    with open(r'C:\Users\sample\Desktop\ZWISCHENSPEICHER.txt','w') as zwischenspeicher:
        zeilen = input_header_stays.readlines()
        for i, line in enumerate(zeilen):
            if line.startswith(config_fstab):
                zwischenspeicher.write(line)
                zwischenspeicher.write(zeilen[i + 1])
                zwischenspeicher.write(zeilen[i + 2])
                zwischenspeicher.write(zeilen[i + 3])
                zwischenspeicher.write(zeilen[i + 4])
                zwischenspeicher.write(zeilen[i + 5])
                zwischenspeicher.write(zeilen[i + 6])
                zwischenspeicher.write(zeilen[i + 7])
                zwischenspeicher.write(zeilen[i + 8])
                zwischenspeicher.write(zeilen[i + 9])
                zwischenspeicher.write(zeilen[i + 10])
                zwischenspeicher.write(zeilen[i + 11])
                zwischenspeicher.write(zeilen[i + 12])
input_header_stays.close()
zwischenspeicher.close()

with open(r'C:\Users\sample\Desktop\SCRIPTING.txt') as input_scripting_fstab:
    with open(r'C:\Users\sample\Desktop\ZWISCHENSPEICHER.txt','a') as zwischenspeicher:
        zeilen = input_scripting_fstab.readlines()
        for i, line in enumerate(zeilen):
            if line.startswith(einhaengepunkte_replace):
                zwischenspeicher.write(line)
                zwischenspeicher.write(zeilen[i + 1])
                zwischenspeicher.write(zeilen[i + 2])
                zwischenspeicher.write(zeilen[i + 3])
                zwischenspeicher.write(zeilen[i + 4])
                zwischenspeicher.write(zeilen[i + 5])
                zwischenspeicher.write(zeilen[i + 6])
                zwischenspeicher.write(zeilen[i + 7])
                zwischenspeicher.write(zeilen[i + 8])
                zwischenspeicher.write(zeilen[i + 9])
                zwischenspeicher.write(zeilen[i + 10])
                zwischenspeicher.write(zeilen[i + 11])
                zwischenspeicher.write(zeilen[i + 12])
                zwischenspeicher.write(zeilen[i + 13])
                zwischenspeicher.write(zeilen[i + 14])
                zwischenspeicher.write(zeilen[i + 15])
                zwischenspeicher.write(zeilen[i + 16])

input_scripting_fstab.close()
zwischenspeicher.close()

这是我的代码。

我认为我需要帮助的棘手部分是这个:

with open(r'C:\Users\sample\Desktop\SCRIPTING.txt') as input_scripting_fstab:
    with open(r'C:\Users\sample\Desktop\ZWISCHENSPEICHER.txt','a') as zwischenspeicher:
        zeilen = input_scripting_fstab.readlines()
        for i, line in enumerate(zeilen):
            if line.startswith(einhaengepunkte_replace):
                zwischenspeicher.write(line)
                zwischenspeicher.write(zeilen[i + 1])
                zwischenspeicher.write(zeilen[i + 2])
                zwischenspeicher.write(zeilen[i + 3])
                zwischenspeicher.write(zeilen[i + 4])
                zwischenspeicher.write(zeilen[i + 5])
                zwischenspeicher.write(zeilen[i + 6])
                zwischenspeicher.write(zeilen[i + 7])
                zwischenspeicher.write(zeilen[i + 8])
                zwischenspeicher.write(zeilen[i + 9])
                zwischenspeicher.write(zeilen[i + 10])
                zwischenspeicher.write(zeilen[i + 11])
                zwischenspeicher.write(zeilen[i + 12])
                zwischenspeicher.write(zeilen[i + 13])
                zwischenspeicher.write(zeilen[i + 14])
                zwischenspeicher.write(zeilen[i + 15])
                zwischenspeicher.write(zeilen[i + 16])

台词越来越多,我自己无法台词了。这就是我的 Python 脚本需要大脑的地方。

最佳答案

如果您只想在某个点之后复制到文件末尾,则不需要枚举。


einhaengepunkte_replace = '#Eigene_Einhaengepunkte'

with open(r'C:\Users\sample\Desktop\SCRIPTING.txt', 'r') as input_scripting_fstab:
    zeilen = input_scripting_fstab.readlines()

with open(r'C:\Users\sample\Desktop\ZWISCHENSPEICHER.txt', 'a') as zwischenspeicher:
    writing = False
    for line in zeilen:
        # This flag just tells us when to start writing
        if line.startswith(einhaengepunkte_replace):
            writing = True

        if writing:
            zwischenspeicher.write(line)

既然你有一个模式,你甚至可以将它放入一个函数中。

def copy_it(source='', destination='', start_point='', mode='a'):
    with open(source, 'r') as source_file:
        source_lines = source_file.readlines()

    with open(destination, mode) as dest_file:
        writing = False
        for line in source_lines:
            if line.startswith(start_point):
                writing = True

            if writing:
                dest_file.write(line)


copy_it(source=r'C:\Users\sample\Desktop\SCRIPTING.txt',
        destination=r'C:\Users\sample\Desktop\ZWISCHENSPEICHER.txt',
        start_point='#Eigene_Einhaengepunkte')

copy_it(source=r'C:\Users\sample\Desktop\SCRIPTING02.txt',
        destination=r'C:\Users\sample\Desktop\ZWISCHENSPEICHER.txt',
        start_point='# /etc/fstab: static file system information.',
        mode='w')

关于python-3.x - 对于每一行 "for loop"无法在我的脚本中实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60543611/

相关文章:

python - 评估数组中的 k 个相邻(正或负)元素

r - 遍历目录以获取 Excel 内容

javascript - 如何使用 JQuery 或 Javascript 动态检索图像 src 属性并将其添加到循环中的 html 中

python - 使用 for 循环遍历列表,检查字符是否存在。如果存在,将角色放入同一个位置的新列表中

javascript - 使用循环在 JavaScript 中将行与列相乘

仅在 PC 启动时出现 Python 错误 sqlite3.OperationalError : unable to open database file

python - 如何在 Python 3 中将两个函数加在一起?

python - 在 Python 中的日期范围内为每年创建新行?

css - 使用 Stylus 在循环中迭代时旋转色调

batch-file - 循环遍历批处理文件中的 ASCII 代码