将一个python文件中的输入添加到另一个python文件中的特定行

Add input from one python file to specific line in another python file

我有一个脚本(我们称之为脚本1),它在运行时请求键入一个名称(一次只能输入一个名称,因此您必须再次运行该脚本以添加另一个名称)

1
2
name = input('
 Please enter your name:'
)

在另一个脚本(我们称之为脚本2)中,我必须按顺序手动键入这些名称

1
names = ['None', 'Name1', 'Name2', 'Name3']

这是脚本2中54行中的第13行

是否可以自动将脚本1中键入的名称(运行脚本1后)添加到脚本2第13行的名称列表中?例如,假设我运行脚本1,当它提示我输入名称时,我输入名称john。如何让脚本自动将"john"(不带"")添加到脚本2中的名称列表中?


如果确实要编辑script2的源代码,可以通过普通的字符串方法或regex,或者更好的方法,标记化或解析文件来完成。但实际上,你几乎肯定不想这样做。

如果您希望在程序运行期间使用某种持久性存储,则可能需要一个单独的文件。对于复杂的情况,您可能希望使用像dbmsqlite3这样的数据库,但是这里,您只有一个名称列表,因此您可能可以将它们每行存储在一个简单的文本文件中。

有两个棘手的部分,但都非常简单:

  • 如果你从未运行过script1,那么现在还没有文件。所以你要处理这个案子。
  • 您需要确保在每个名称后面写新行('
    '
    ),然后在另一端去掉新行。

脚本1.py:

1
2
3
4
5
name = input('
 Please enter your name:'
)
with open('names.txt', 'w') as f:
    f.write(name + '
'
)

脚本2.py:

1
2
3
4
5
try:
    with open('names.txt') as f:
        names = [line.rstrip() for line in f]
except FileNotFoundError:
    names = []

如果你想在调用script1之前就有一个有效的名字的"起始列表",你可以添加一个names = ['Name1', 'Name2'] line about theopendocx1〔5〕names=[…]tonames.extend(…)`。但听起来你不想这样做,所以我让它从一个空列表开始,唯一的名称是你添加到文本文件中的名称。

还有一件事:在当前工作目录中查找names.txt。因此,如果从其他目录运行脚本,它将找不到该文件。如果你想在一个特定的地方找到它,比如/Users/Pergamon256/.config/my-app/names.txt,那就很容易了。如果你想"我的操作系统在哪里都是正常的地方",那就有点棘手了;Pypi上有库可以为你做这些。如果您想要脚本所在的同一个目录,那么上面有一些很好的答案,以展示如何做到这一点。