3

我想为我的 python 代码使用带有配置变量的 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我认为文件的名称可以放在您提供c的末尾。pathname

如果您不想要编译缓存,那么只需读取文件并创建自己的模块。有关执行此操作的方法,请参阅从 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 回答