我有一个奇怪的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
# -----
Run Code Online (Sandbox Code Playgroud)
任何人都有类似的经历,还是仅仅是我?
您的文件users.txt是UTF-16,但您将其打开为ASCII.
将其更改为ASCII,或者像这样打开它:
import codecs
users = codecs.open( "users-16.txt", "r", "utf-16" )
Run Code Online (Sandbox Code Playgroud)