在另一个文件中更改保存文件的目录。干净整洁。不脏乱

Change directory of the saved file inside another file. Clean and neat. No mess

我做过注册登录的程序,但是程序保存的数据文件和程序文件在同一个目录.如何将保存文件的目录更改为新文件,以免乱七八糟。这是我的程序(虽然是新手)。

import pickle
while True:
    RegOrLog = raw_input('[Register/Login]:')
    if RegOrLog not in ('reg', 'register', 'REGISTER','log', 'login', 'LOGIN',\
                        'r','l'):
        print "Please enter 'register' if you dont have account"
        print "Please enter 'login' if you already registered"

    if RegOrLog in ('reg', 'register', 'REGISTER','r','Register'):
        count = 0
        while count < 1:
            regusrnm = raw_input('Enter your desire login name:')
            regusrnm = regusrnm.lower()
            regpswrd = raw_input('Enter your password:')
            while True:
                regage = raw_input('Enter your age:')
                if int(regage) not in range(1, 100):
                    print 'please enter apropriate value'
                else:
                    break

            while True:
                reggender = raw_input('State your gender:')
                if reggender not in ('male', 'female'):
                    print 'Are you an alien?'
                else:
                    break

            data = {"username": regusrnm, "password": regpswrd, "age": regage,\
                    "gender": reggender}
            pickle.dump( data, open( regusrnm, "wb" ) )
            RegOrLog = 'login'
            print 'Please login to your account for security purpose'
            break

    if RegOrLog in ('log', 'login', 'LOGIN','l','Login'):
        logusrnm = raw_input('Enter your username:')
        data = pickle.load( open( logusrnm, "rb" ) )
        count = 3
        while count >= 1:
            logpswrd = raw_input('Enter your password:')
            count = count - 1
            if logpswrd != data["password"]:
                print "You have",count, "attempt left"
                if count == 0:
                    print "The account doesn't exist or wrong password"
                    print 'Please register a new one'
                    break

            else:
                 print 'Welcome Back',data["username"]
                 break

您的文件未保存 "in the same directory as the program",它保存在执行脚本时的当前目录中。将文件存储在其他地方的方法非常简单明了:只需将您希望文件保存到的完整绝对路径显式传递到 open().

为每个用户创建一个单独的文件不是一个好主意。使用数据库或单个文件来保存用户信息,这个问题的任何解决方案都将是 hacky,但如果你仍然想这样做,不管你在做什么,做这样的事情:

import pickle, os
user_folder = "user_data/"
if not os.path.exists(user_folder):
    os.makedirs(user_folder)
while True:
    RegOrLog = raw_input('[Register/Login]:')
    if RegOrLog not in ('reg', 'register', 'REGISTER','log', 'login', 'LOGIN',\
                        'r','l'):
        print "Please enter 'register' if you dont have account"
        print "Please enter 'login' if you already registered"

    if RegOrLog in ('reg', 'register', 'REGISTER','r','Register'):
        count = 0
        while count < 1:
            regusrnm = raw_input('Enter your desire login name:')
            regusrnm = regusrnm.lower()
            regpswrd = raw_input('Enter your password:')
            while True:
                regage = raw_input('Enter your age:')
                if int(regage) not in range(1, 100):
                    print 'please enter apropriate value'
                else:
                    break

            while True:
                reggender = raw_input('State your gender:')
                if reggender not in ('male', 'female'):
                    print 'Are you an alien?'
                else:
                    break

            data = {"username": regusrnm, "password": regpswrd, "age": regage,\
                    "gender": reggender}
            pickle.dump( data, open( user_folder + regusrnm, "wb" ) )
            RegOrLog = 'login'
            print 'Please login to your account for security purpose'
            break

    if RegOrLog in ('log', 'login', 'LOGIN','l','Login'):
        logusrnm = raw_input('Enter your username:')
        data = pickle.load( open( user_folder + logusrnm, "rb" ) )
        count = 3
        while count >= 1:
            logpswrd = raw_input('Enter your password:')
            count = count - 1
            if logpswrd != data["password"]:
                print "You have",count, "attempt left"
                if count == 0:
                    print "The account doesn't exist or wrong password"
                    print 'Please register a new one'
                    break

            else:
                 print 'Welcome Back',data["username"]
                 break