Python: 如何将列表中的文本+元素保存到txt文件

Python: how to save text + element from the list to the txt file

我正在学习 Python,我正在尝试将保存文本 + 列表中的特定元素合并到一个 txt 文件中。

我设法把文本弄出来了,它看起来像这样:

项目名称: 主要工作人员: 项目名称: 主要工作人员:

这很好,但我想添加列表中的工作人员和项目,如下所示:

项目名称:微软 主要测试人员:Michael Scott 项目名称:亚马逊 主要测试人员:Dwight Schrute

我不确定如何添加,这是我目前得到的:

class Worker:
    def __init__(self, name, lastname):
        self.name = name
        self.lastname = lastname

    def name_lastname(self):
        print(self.name, self.name)

class Project:
    def __init__(self, name, worker):
        self.name = name
        self.worker = worker

workers = []
projects = []

name1 = input("Enter the name: ")
lastname1 = input("Enter the last name: ")
workers.append(name1 + ' ' + lastname1)

name2 = input("Enter the name: ")
lastname2 = input("Enter the last name: ")
workers.append(name2 + ' ' + lastname2)

projectname1 = input("Enter the name of the project: ")
projectname2 = input("Enter the name of the project: ")
projects.append(projectname1)
projects.append(projectname2)

print(workers)
print(projects)

file = open("projects.txt","w")
file.write("Project name: \n")
file.write("Main worker: \n")
file.write("Project name: \n")
file.write("Main worker: \n")
file.close()

如果我没理解错的话,只需像 headers 那样写名称和项目(例如“项目名称:”)就足够了。例如:

file.write("Project name: \n")
file.write(projects[0] + "\n")
file.write("Main worker: \n")
file.write(workers[0] + "\n")
file.write("Project name: \n")
file.write(projects[1] + "\n")
file.write("Main worker: \n")
file.write(workers[1] + "\n")
file.close()

对于列表,您可以使用列表[0] 访问第一个元素,使用列表[1] 访问第二个元素,依此类推。然而,这是一种相当手动的方法,如果以后有更多条目,您可以在此处使用循环来遍历列表条目。

我不确定你的输入和输出数据,但我希望我理解正确。因为你是一个 Python 学习者,我冒昧地介绍了一些其他 Python 技术,使解决方案更 Pythonic 并且更不容易出错.

完整示例

#!/usr/bin/env python3
import pathlib

# example data (assuming both lists with same length)
all_workers = ['John Doe', 'Jenny Boe']
all_projects = ['Project Alpha', 'Project Beta']

# file path
projects_file_path = pathlib.Path('projects.txt')

# open the file
with projects_file_path.open('w') as file_handle:
    # iterate over your lists side by side
    for worker, project in all_workers, all_projects:
        file_handle.write(f'Project name:\n{project}\n')
        file_handle.write(f'Main worker:\n{worker}\n')

# let's look what is in the file
with projects_file_path.open('r') as file_handle:
    print(file_handle.read())

生成的 projects.txt 文件如下所示。这是你想要的吗?

Project name:
Jenny Boe
Main worker:
John Doe
Project name:
Project Beta
Main worker:
Project Alpha
 

Step-by-step解释

我从您的示例代码中删除了两个 类,因为我看不到它们的优势。我还删除了 input() 部分并对一些示例数据进行了硬编码。希望这样可以吗?

# example data (assuming both lists with same length)
all_workers = ['John Doe', 'Jenny Boe']
all_projects = ['Project Alpha', 'Project Beta']

要与文件和文件系统交互,建议使用 Pythons pathlib 包。代码中的 with 块确保文件在块结束时自动关闭。

import pathlib
    
projects_file_path = pathlib.Path('projects.txt')

# open the file
with projects_file_path.open('w') as file_handle:
    # write...

我认为 for-loop 是不言自明的。它的好处是它可以防止你写重复的代码。

我用这样的 f 字符串构建了写入文件的字符串。

file_handle.write(f'Project name:\n{project}\n')

但您也可以使用旧方法 format()

file_handle.write('Project name:\n{}\n'.format(project))