-1

当我尝试从wahbilogintest.py包含字典的文件中获取键和值时遇到了问题kids{}

你能帮我如何wahbilogintest.py在目录中搜索我的文件C:/webbplats/mydata并在文件中迭代以获取/带来键和值吗?

我的源代码

class visafilerIkatalogen :
    import os  
    folder = 'c:/webbplats/mydata/' 
    dinfil = raw_input("Enter your userprofile med prefix.txt: ")
    #dindictionary = raw_input("Enter your dictionary name: ")
    loginReadProfile = open(folder+str(dinfil),'r')
    for key, value in dinfil.iteritems():
            print 'Username is: ',key
            print 'value is: ',value

    print loginReadProfile.readlines()
    loginReadProfile.close()


Myobj12 = visafilerIkatalogen()
4

1 回答 1

0

打开一个文件open()会给你一个iterable为文件的每一行生成一个字符串。它没有给你一个你可以调用的对象.iteritems()

要访问文件中的 python 对象,您需要import它,而不是打开它。给定用户输入的一种方法是:

import os
import sys

folder = 'c:/webbplats/mydata/'
dinfil = raw_input("Enter userprofile med prefix")
## Get the full path, the directory, and the filename
full_path = path.join(folder, dinfil)
path, filename = os.path.split(full_path)
filename, ext = os.path.splitext(filename)
## Add the directory to the sys.path and import the module
sys.path.append(path)
data_module = __import__(filename)

此时你有一个对 python 的引用module。您可以使用点分符号访问此模块中定义的名称。因此,如果有一个名为 'kids' 的字典,您可以遍历它的键/值对,因此:

for key, value in data_module.kids.iteritems():
    print 'Username is: %s' % key
    print 'Value is %s': % value

您应该认真重新考虑这种访问每个用户数据的方法。太复杂了 可能有很多更好的方法可以做到这一点,但如果没有更多关于你想要达到的目标的信息,我真的无法提供更多帮助。

您还可以做几件事来改进您的代码:

  1. 你的类应该继承自object
  2. 导入语句应该(几乎)总是在类定义之外
  3. 用于sys.path.join()连接部分文件路径
于 2012-07-28T11:16:07.117 回答