-1

I faced a problem when I tried to get the key and value from my file wahbilogintest.py, which contains a dictionary kids{}.

Can you please help me how I will search after my file wahbilogintest.py in directory C:/webbplats/mydata and iterate over in the file to get/bring key and value?

My source code

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開く必要はありません。ユーザー入力を考慮してこれを行う 1 つの方法は次のとおりです。

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. import ステートメントは (ほぼ) 常にクラス定義の外にある必要があります
  3. sys.path.join()ファイルパスの一部を結合するために使用します
于 2012-07-28T11:16:07.117 に答える