2009-07-05 3 views
1

У меня возникла несколько странная проблема с Python (2.6.2) , что я пришел к выводу, что это ошибка в порту Vista (я не могу ее реплицировать в XP или Linux).Проблема с печатью содержимого списка

У меня есть список пользователей, зашифрованных паролей и их хост, которые я храню в большем списке (он действует как своего рода база данных).

Это все работает нормально и денди, за исключением того, что существует несогласованность в том, как хранятся данные одного пользователя и как сохраняется группа.

созданный 'create_user' метод

[ 'локальный', 'демо', '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 

# ----- 

Кто-нибудь есть какие-либо подобные опыты с этим или это только у меня?

ответ

6

Ваш файл users.txt находится в UTF-16, но вы открываете его как ASCII.

Либо измените его ASCII или открыть его, как это:

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

I <3 вы. Благодарю. –

1

Попробуйте заменить

create_user(user) 

с

create_user(user.decode("utf16")) 
+0

Я думаю, что большая часть проблемы пришла от меня, используя Wordpad, чтобы написать текстовый файл. Я переделал его в Emacs, и все получилось просто отлично. –

Смежные вопросы