3

Pythonコードのconfigure変数を含むtxtファイルを使用したいと思います.そして、次のコードをWebからPythonにコピーしました。

def getVarFromFile(filename):
  import imp 
  f = open(filename)
  global cs
  cs = imp.load_source('cs', '', f)
  f.close()

奇妙なことに、Python コードを実行するたびに、ディレクトリに "c" という名前のファイルが作成され、次のような多くの奇妙な文字が格納されます。

mò ;€-Rc

なぜこの「c」ファイルが来るのですか?どうすればそれを取り除くことができますか? ありがとう

----追加情報----- で電話をかけました

getVarFromFile('config/cs.txt')

そして私のcs.txtは次のようになります:

var1 = 'abc'
var2 = 'h'
var3 = '2'
var4 = '1'

そして、私は次のようなデータを使用します:

var2 = int(cs.var2)

そして私のデバッグによって、私が入れたら

sys.exit()

cs = imp.load_source('cs', '', f)

そのようなcファイルは生成されません。その行の後に exit を入力すると、「c」という名前のファイルが生成されます。

したがって、それはその機能に関連している必要があります

4

1 に答える 1

3

パラメータにより適切な値を指定する必要がありpathnameます。

imp.load_source(name, pathname, file)ソースファイルをロードするために使用されます。その一環として、ソースファイルをバイトコードにコンパイルし、コンパイルされたコードを.pycファイルに書き出します。あなたが提供したの最後に.pyc付けることによって得られると思うファイルの名前。cpathname

コンパイル キャッシュが必要ない場合は、ファイルを読み込んで独自のモジュールを作成するだけです。これを行う方法については、Python で文字列からモジュールを読み込むを参照してください。

import sys,imp

my_code = 'a = 5'
mymodule = imp.new_module('mymodule')
exec my_code in mymodule.__dict__    

元のコードと組み合わせると、次のようになります (未テスト):

def getVarFromFile(filename):
  import imp 
  with open(filename) as f:
      global cs
      cs = imp.new_module('cs')
      exec(f.read(), cs.__dict__)
于 2013-09-09T08:49:45.943 に答える