gpt4 book ai didi

python 总是创建一个名为 "c"的文件,为什么? (使用 cs=imp.load_source ('cs' ,'' ,f) 函数)

转载 作者:行者123 更新时间:2023-11-28 16:41:49 25 4
gpt4 key购买 nike

我想为我的 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”的文件。

所以它一定和那个函数有关

最佳答案

您需要为 pathname 参数提供一个更合理的值。

imp.load_source(name, pathname, file) 用于加载源文件。作为其中的一部分,它将源文件编译为字节码并将编译后的代码写入 .pyc 文件。 .pyc 文件的名称我认为它是通过将 c 放在您提供的 pathname 的末尾获得的。

如果您不想要编译缓存,那么只需读取文件并创建您自己的模块。参见 Load module from string in 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__)

关于python 总是创建一个名为 "c"的文件,为什么? (使用 cs=imp.load_source ('cs' ,'' ,f) 函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18694057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com