【问题标题】:Change directory of the saved file inside another file. Clean and neat. No mess在另一个文件中更改保存文件的目录。干净整洁。不脏乱
【发布时间】:2015-12-19 01:36:28
【问题描述】:

我已经为 registerlogin 做了一个程序,但是程序保存的数据文件与程序文件是同一目录。如何将保存文件的目录更改为新文件,以免造成混乱。这是我的程序(虽然是新手)。

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

【问题讨论】:

    标签: python python-2.7 directory save


    【解决方案1】:

    为每个用户创建单独的文件不是一个好主意。使用数据库或单个文件来保存用户信息,任何解决此问题的方法都将是 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
    

    【讨论】:

    • 哈哈。它只用于我的大学作业。顺便说一句,感谢您分享您的想法
    【解决方案2】:

    您的文件没有“保存在与程序相同的目录中”,而是保存在脚本执行时的当前目录中。将文件存储在其他地方的方法非常简单明了:只需将要保存文件的完整绝对路径明确传递给open()

    【讨论】:

    • 你能给我一个如何保存文件的例子吗?对不起,我的英语不好
    • 在“只是明确地将要保存文件的 完整绝对路径 传递给 open()”中你不明白的到底是什么。 ? f = open("blah.txt") 将在当前工作目录(通常是您启动脚本时所在的目录)中查找名为“'blah.txt”的文件。 f = open("/home/bigb/blah.txt") 将在“/home/bigb/”目录中查找名为“blah.txt”的文件。这里没有火箭科学;)
    • oohhhh~ 现在我明白了。这就是我想要的答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2013-05-23
    • 2016-04-26
    • 1970-01-01
    • 2017-09-03
    相关资源
    最近更新 更多