两个微小的python问题

时间:2016-03-08 02:10:41

标签: python python-2.7 python-3.x

fn = raw_input("Enter file to open: ")
fileObject = open(fn,'r+')
dictionary = {}
for line in fileObject:
    x = line.split(":")
    a = x[0]
    b = x[1]
    c = len(b)-1
    b = b[0:c]
dictionary[a] = b
print dictionary

在我测试了我的程序之后,我发现除了2个小问题外,一切都很完美。你能告诉我出了什么问题吗?

我的文本文件中包含以下内容:

USERNAME1:密码1

username2:password2

USERNAME3:password3

username4:password4

username5:password5

(这是实际文本文件中的空行)

第一个问题:        我的程序将文件完整地读入字典,但它正在读取乱序,我试图在读入字典部分之后打印字典,下面就是我得到的字体。

   {'username1': 'password1', 'username3': 'password3', 'username2': 'password2', 'username5': 'password5', 'username4': 'password4'}

第二个问题:

对于文本文件,在password5之后,我必须按回车并保存文本文件才能得到这个:

   {'username1': 'password1', 'username3': 'password3', 'username2': 'password2', 'username5': 'passwor**d5'**, 'username4': 'password4'}

如果我没有在文本文件的末尾点击输入,那么它将成为:

    {'username1': 'password1', 'username3': 'password3', 'username2': 'password2', 'username5': 'passwo**rd'**, 'username4': 'password4'}

2 个答案:

答案 0 :(得分:0)

您正在使用无序字典,这就是打印字典时不保留订单的原因。其次,需要新的行字符才能使用for-in循环正确迭代。

答案 1 :(得分:0)

你错了是没有订购字典。

我建议使用OrderedDict或使用Python列表。

fn = raw_input("Enter file to open: ")
fileObject = open(fn,'r+')
list1 = []

for line in fileObject:
    x = line.split(":")
    list1.append(x)

print list1

此外,您对该列表的意图是什么?