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))
我正在学习 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))