我在使用 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\x00m\x00o\x00u\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" )
