为什么变量 line1 和 line2 不会写入文件"USERDATA.py"?



对不起,如果这是发布此信息的错误区域。自从我触摸python(一般代码)以来已经有一段时间了,所以我提出的代码很可能很可怕,但是它不会将变量liniaile line1 and line2写入userdata.py文件,我无法弄清楚为什么会有任何帮助,感谢。欢呼

    #import
import os
#
runstartText = 'Start success'
print(runstartText)
#setting values
file1 = './data'
file2 = './data/userpass'
file3 = './data/userpass/access.py'
newUserTEXT1 = 'Please input a valid email, username and password'
#checking/creating directorys
if not os.path.exists(file1):
    os.makedirs(file1)
    print('Created', file1)
if not os.path.exists(file2):
    os.makedirs(file2)
    print('Created', file2)

#def
def newUser():
    print(newUserTEXT1)
    username = input('Enter New System Username: ')
    password = input('Enter New System Password: ')
    passwordConfirm = input('Re-Enter New System Password: ')
    if password == passwordConfirm:
        print('Username and Password Stored')
        line1 = 'username = ', username
        line2 = 'username = ', password
        apples = 1
        if apples == 1:
            userdatafile = open('USERDATA.py', 'w+')
            userdatafile.writelines([line1, line2,])
            userdatafile.close()

        #-> store data
        #-> to login
    if password != passwordConfirm:
        print('ERROR: Passwords do not match, please retry')
        #-> restart newUser string
def login():
    from USERDATA import username, password
    print('Please Enter Username and Password:')
    usernameTEMP = input('Username: ')
    if usernameTEMP == username:
        passwordTEMP = input('Password: ')
        if passwordTEMP == password:
            print('Successful Login!')
            # -> to login

在您的代码中,您从未真正调用newUser()。我添加了一个电话并获取错误:

line 37, in newUser userdatafile.writelines([line1, line2,]) TypeError: write() argument must be str, not tuple

因此,我们应该用字符串userdatafile.writelines("".join(line1).join(line2))

替换内部元组:userdatafile.writelines([line1, line2,])

一切都应该按预期工作。

正如Hoog已经指出的那样,最重要的问题是您没有调用newUser函数。始终以问题和不必要的细节显示所有相关代码。

我在代码中看到的下一个最大的问题是,您不是在构建字符串来写入文件。我猜line1line2的定义应该这样读:

line1 = 'username = ' + username + 'n'
line2 = 'password = ' + password + 'n'

一个重要的警告:我希望您只作为练习才能做到这一点。这甚至没有正确处理帐户数据的正确方法。

最新更新