我在使用Python(2.6.2)时遇到了一个奇怪的问题,我得出的结论是Vista端口存在错误(我无法在XP或Linux中复制它)。

我有一个用户列表,加密的密码以及我要存储在更大列表中的主机(它充当一种数据库)。

除了在存储单个用户的数据以及存储组的方式方面存在不一致之处之外,所有其他方法都可以正常工作。

由'create_user'方法创建


  ['localhost','demo','demouserpasswordhash']


由'create_database'方法创建


  ['\ xff \ xfel \ x00o \ x00c \ x00a \ x00l \ x00h \ x00o \ x00s \ x00t \ x00','\ x00d \ x00e \ x00m \ x00o \ x00','\ x00d \ x00e \ x00e \ x00m \ x00o \ x00o \ x00s \ x00e \ x00r \ x00p \ x00a \ x00s \ x00s \ x00w \ x00o \ x00r \ x00d \ x00h \ x00a \ x00s \ x00h \ x00 \ r \ x00 \ n'


考虑到它的代码多么简单,我不明白为什么要这样做:

# ----- base functions

def create_user ( user_data ):
    return user_data.split(":")

def show_user ( user_data ):
    print "Host: ", user_data[0]
    print "Username: ", user_data[1]
    print "Password: ", user_data[2]
    print

def create_database ( user_list ):
    database = []
    for user in user_list:
        database.append( create_user( user ) )
    return database

def show_database( database ):
    for row in database:
        show_user( row )

# ----- test area

users = open( "users.txt" )


test_user = create_user( "localhost:demo:demouserpasswordhash" )
db = create_database( users )

print db[0]
print test_user

# -----


任何人都对此有类似的经历,或者仅仅是我吗?

最佳答案

您的文件users.txt位于UTF-16中,但是您正在以ASCII格式打开它。

要么将其更改为ASCII,要么像这样打开它:

import codecs
users = codecs.open( "users-16.txt", "r", "utf-16" )

10-08 19:48