2009-07-05 6 views
1

Python (2.6.2)에서 다소 이상한 문제가 있습니다.은 Vista 포트의 버그입니다 (XP 또는 Linux에서 복제 할 수 없음).).목록의 내용을 인쇄 할 때 문제가 발생했습니다.

사용자 목록, 암호화 된 암호 및 더 큰 목록에 저장하는 호스트 (데이터베이스 종류로 사용)가 있습니다.

이것은 단일 사용자의 데이터가 저장되는 방법과 그룹이 저장되는 방법에 불일치가 있다는 점을 제외하고는 모두 멋지게 멋지게 작동합니다. 'CREATE_USER'방법

[ '로컬 호스트 ","민주당 ","demouserpasswordhash']를 'CREATE_DATABASE'에 의해 생성

방법에 의해 생성

[ '\ x00d \ x00e \ x00m \ x00o \ x00', '\ x00d \ x00e \ x00m \ x00o \ x00u \ x00d \ x00c \ 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 

# ----- 

사람이 어떤 비슷한 경험이 있거나 그것은 단지 나입니까?

답변

6

파일 users.txt는 UTF-16이지만 파일을 ASCII로 열었습니다.

ASCII로 변경, 또는 다음과 같이 엽니 다음 중 하나를

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

create_user(user) 

를 교체하려고 나는 3 당신은 <. 감사. –

1

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

나는이 문제의 대부분이 워드 패드를 사용하여 텍스트 파일을 작성했다는 생각이 든다고 생각합니다. 나는 Emacs에서 그것을 redid했고 그것은 잘 동작했다. –

관련 문제