试图将用户输入的变量添加到不同文件中的现有列表中?

问题描述 投票:0回答:2

我正在尝试为我正在制作的游戏创建永久帐户,这需要您在能够玩游戏之前创建帐户。我试图弄清楚如何添加它,这是我设法将其添加到文件中最接近的。会发生什么事情,它要求用户输入他们的名字,然后将其保存到我的variables.py第一行的列表中,这就是我试图做的

elif menu == '3':
        enterUsername = input('Please Enter A New Username')
        with open('variables.py', 'a') as text_file:
            print ("{}".format(enterUsername)[0], file=text_file)
        continue

不幸的是,这似乎不起作用,它将名称添加到文件的底部。列表中已有现有名称,因此我想添加它

main.py

用户输入=“TestUserName”

variables.py

authUsers = ['David','John','Ali','TestUserName']

我还尝试将第4行的[0]更改为[authUsers],但它返回时显示错误,表明它只能是整数。除此之外,我在这里阅读文件https://developers.google.com/edu/python/lists。谢谢,如果有人可以帮助!

python
2个回答
-2
投票

这样的事情怎么样,你的variables.py只包含auth_users?如果没有给他们自己的auth_users.py然后你可以导入他们更新他们并重写他们检查出来:

from variables import auth_users

username = input('Please Enter A New Username: ')
auth_users.insert(0, username)
something = "auth_users = {}".format(auth_users)
with open('variables.py', 'w') as f:
    f.write(something)

之前:

(xenial)vash@localhost:~/python/stack_overflow$ cat variables.py
auth_users = ['David', 'John', 'Ali', 'TestUserName']

后:

(xenial)vash@localhost:~/python/stack_overflow$ cat variables.py
auth_users = ['Vash', 'David', 'John', 'Ali', 'TestUserName']

第二轮:

(xenial)vash@localhost:~/python/stack_overflow$ cat variables.py
auth_users = ['Stampede', 'Vash', 'David', 'John', 'Ali', 'TestUserName']

0
投票

创建一些函数来访问您的用户文件:

def addUser(fn, user):
    """Append user to file fn.""" 
    with open(fn,"a") as f:
        f.write(user+"\n")

def getAllUsers(fn):
    """Read file fn, return all users.""" 
    with open(fn,"r") as f:
        users=[x.strip() for x in f.readlines() if x.strip()]
    return users

filename  = "user.txt"

u = getAllUsers(filename);
print(u)                      # []

# add some users
addUser(filename,"John")
addUser(filename,"Mike")
addUser(filename,"Melitta")

u = getAllUsers(filename)     
print(u)                      # ['John', 'Mike', 'Melitta']

基本上你不修改你的python-sourcecode,但你创建了一个配置文件,用户可以读入python列表并进行处理/检查。

配置文件只包含一行中的每个用户,并且可以再次读入您的程序。


该文件看起来像:

John
Mike
Melitta

(每个名称,后跟一个\ n)。

© www.soinside.com 2019 - 2024. All rights reserved.