在文本文件中存储和重新导入用户名和密码

时间:2015-10-16 00:17:56

标签: python

我是一名学习Python的学生,一般都是编码新手。我已经开始了这个"迷你游戏"侧面项目,但我在创建创建用户名和密码的脚本时遇到了问题,并将它们存储到文本文件中。

def createUser():
   import Usernames_Passwords.txt
   open("Usernames_Passwords.txt", "r")
   Username = raw_input("Create a username: ")
   Password = raw_input("Create a password: ")

但它出现了错误:

import Usernames_Passwords.txt
ImportError: No module named Usernames_Passwords.txt

我删除了导入行,程序的其余部分一直有效,直到我收到此错误:

if User == Username and PassWord == Password:
NameError: global name 'Username' is not defined

这是整个脚本:

import os
import time
import sys


def createUser():
import Usernames_Passwords.txt
open("Usernames_Passwords.txt", "r")
Username = raw_input("Create a username: ")
Password = raw_input("Create a password: ")



def login():

    User = raw_input ("Enter Username: ")
    time.sleep(0.5)
    PassWord = raw_input ("Enter Password: ")

    if User == Username and PassWord == Password:
        print "."
        time.sleep(0.5)
        print "."
        time.sleep(0.5)
        print "."
        time.sleep(0.5)
        print "."
        time.sleep(0.5)
        print "Login successful! Proceeding"
        logged()

    else:
        print "."
        time.sleep(0.5)
        print "."
        time.sleep(0.5)
        print "."
        time.sleep(0.5)
        print "."
        time.sleep(0.5)
        print "Your Username or Password did not match, please try again"
        time.sleep(2)

def logged():

print "WELCOME TO SUPER MARIO INTERACTIVE SIMULATOR 2000"
time.sleep(1.5)
print "PLEASE ENTER YOUR NAME BELOW"
Name = raw_input ("NAME: ")
print "HELLO THERE", Name
time.sleep(1)
print "PLEASE ALSO INSERT YOUR AGE"
Age = raw_input ("AGE: ")
print "GOOD YOU ARE", Age
time.sleep(2)
print "BUT FIRST YOU MUST PASS THIS TEST"

createUser()
time.sleep(3)
login()

2 个答案:

答案 0 :(得分:1)

创建新文件时,您需要使用" w"这样写的写模式。

file = open("Usernames_Passwords.txt", "w")

如果文件已经创建并且你想添加它,你可以使用这样写的附加模式。

file = open("Usernames_Passwords.txt", "a")

如果你想从已经写好的文件中读取文件,你可以使用" r"你以前的模式。

file = open("Usernames_Passwords.txt", "r")

据我所知,import语句用于调用其他库,所以你特别不需要这个程序。

答案 1 :(得分:1)

我发布的代码有三个主要问题:

  1. 您正在打开文本文件的只读副本。 MoonMoon指出你不需要那个import语句。导入仅适用于您要使用的库,因此只需删除它(这是第一个错误的原因,python无法通过名称“Usernames_Passwords.txt”找到模块)。您想使用“打开”功能来访问文件。 open()函数的第二个参数是您打开文件的模式。“r”被读取,“w”被写入,“a”被追加。因为我想你想多次运行它并将所有过去的用户名和密码保存在你想要追加的同一个文件中。完成后,您还需要关闭文件。最简单的方法是使用with语句。您可以阅读有关with语句here的更多信息:

    with open("Usernames_Passwords.txt", 'a') as f:
        # do something 
    
  2. 您没有在txt文件中写任何内容。你必须告诉python写入文件,否则你不会保存任何东西。尝试这样的事情:

    with open("Usernames_Passwords.txt", 'a') as f:
        Username = raw_input("Create a username: ")
        Password = raw_input("Create a password: ")
        f.write('%s, %s \n' % (Username, Password))
    

    如果我对%做了什么让你感到困惑,那就叫做字符串格式操作符。它允许您将变量插入到具有指定格式的字符串中。一个小小的谷歌搜索将告诉你你需要知道的一切。

  3. 您没有在登录功能中检查Username_Passwords.txt。这是您提到的第二个错误的原因。在另一个函数中定义Username时,会创建一个“本地”变量。这意味着您只能在该功能中访问它。查看this python tutorial它可以很好地解释全局和局部变量是什么。我想您要做的是通过读取您之前写入的文件来设置登录函数中的用户名和密码(这意味着您希望在“读取”模式下使用open()。)
  4. 我会留给你弄清楚细节,但这是一个很好的起点。您发布的代码中的缩进也存在一些问题,但我认为这些只是根据您收到的错误来复制错误。

    顺便说一句,当我第一次学习编码时,我使用了“Code Academy”。这是一个教授python的在线互动教程。我想你会从中得到很多。