【问题标题】:Append multiple lines in multiple files在多个文件中追加多行
【发布时间】:2021-04-04 15:48:54
【问题描述】:

我需要创建一定数量的文件,其中始终包含相同的行。

使用这个脚本,我可以创建“schede”文件夹,其中创建了一定数量的 *.tex 文件。

乳胶字符串只写在最后一个选项卡中,而其他的则保持空白。如何填写所有表格?

import os
import subprocess
work_path = os.path.abspath(os.path.dirname(__file__))
if not os.path.exists("schede"):
    os.mkdir("schede")
os.chdir(os.path.expanduser(work_path+"/schede"))
n = 5   #put the number as you wish

for i in range(n):
    file_name = "S"+str(i).zfill(1)+".tex"
    subprocess.call(['touch', file_name]) #crea 34 file s.tex

def append_new_line(file_name, text_to_append):
    """Append given text as a new line at the end of file"""
    # Open the file in append & read mode ('a+')
    with open(file_name, "a+") as file_object:
        # Move read cursor to the start of file.
        file_object.seek(0)
        # If file is not empty then append '\n'
        data = file_object.read(100)
        if len(data) > 0:
            file_object.write("\n")
        # Append text at the end of file
        file_object.write(text_to_append)
        
def append_multiple_lines(file_name, lines_to_append):
    # Open the file in append & read mode ('a+')
    with open(file_name, "a+") as file_object:
        appendEOL = False
        # Move read cursor to the start of file.
        file_object.seek(0)
        # Check if file is not empty
        data = file_object.read(100)
        if len(data) > 0:
            appendEOL = True
        # Iterate over each string in the list
        for line in lines_to_append:
            # If file is not empty then append '\n' before first line for
            # other lines always append '\n' before appending line
            if appendEOL == True:
                file_object.write("\n")
            else:
                appendEOL = True
            # Append element at the end of file
            file_object.write(line)

def main():
    append_new_line(file_name, 'This is second line')
    print('Append multiple lines to a file in Python')
    list_of_lines = [
        '\ecvtitle{}{}',
    '\ecvitem{\ecvhighlight{Organizzato da:}}{\\textbf{}}',
       '\ecvitem{\ecvhighlight{}}{}',
        '\ecvitem{}{}',
    '\ecvitem{\ecvhighlight{Programma Formativo:}}{}',
    '\smallskip',
      '\ecvitem{}{',
          '\\begin{ecvitemize}'
            '\item  scrivere un\'item',
         '\\end{ecvitemize}',
         '}']
    # Append strings in list as seperate new lines in the end of file
    append_multiple_lines(file_name, list_of_lines)

if __name__ == '__main__':
   main()

【问题讨论】:

  • file_name 是一个包含 one 字符串的 single 变量。您只覆盖了姓氏。
  • @MisterMiyagi 谢谢你的建议。我对python不是很熟悉,我刚开始,不太明白如何设置你建议的

标签: python append multiline


【解决方案1】:

正如@MisterMiyagi 所说,file_name 是一个变量,因此每次创建文件时都会被覆盖

我建议创建一个名为 files = [] 的列表 而不仅仅是file_name = "S"+str(i).zfill(1)+".tex"

添加files.append(file_name) 到创建文件的 for 循环的末尾。

并更改 main 以执行每个文件的说明。

def main():
    for file_name in file:
        append_new_line(file_name, 'This is second line')
        print('Append multiple lines to a file in Python')
        list_of_lines = [
        '\ecvtitle{}{}',
        '\ecvitem{\ecvhighlight{Organizzato da:}}{\\textbf{}}',
        '\ecvitem{\ecvhighlight{}}{}',
        '\ecvitem{}{}',
        '\ecvitem{\ecvhighlight{Programma Formativo:}}{}',
        '\smallskip',
        '\ecvitem{}{',
        '\\begin{ecvitemize}'
        '\item  scrivere un\'item',
        '\\end{ecvitemize}',
        '}']
        # Append strings in list as seperate new lines in the end of file
        append_multiple_lines(file_name, list_of_lines)

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 2020-05-06
    • 2014-10-23
    相关资源
    最近更新 更多