我想问: 有没有(在Python中)任何方法,如何绝对愚蠢地将其他文件包含到源代码中?没有任何诸如模块之类的舞蹈, 即相当于 C 中的 #include ? 对此提出了很多问题,但所有问题都在打开导入模块。不,我只想将任何文件中的一些文本行插入到我的代码中,而不对其进行预处理。
例如:
让我们归档mysum.py
c = a + b # there is just this one line
我想包含另一个源代码: 文件experiment.py:
#!/usr/bin/python
# -*- coding: UTF8 -*-
import importlib
import sys
import math
a = 1
b = 2
import **mysum**
print c
好吧,这不起作用,
Traceback (most recent call last):
File "./experiment.py", line 12, in <module>
import mysum
File "/home/rna/unix/mypok/mysum.py", line 5, in <module>
c = a + b
NameError: name 'a' is not defined
我真的需要一个简短的头文件包含更多不同的脚本,其中会有关于MySQL连接和类似数据的定义变量,对于更多脚本来说很常见。
最佳答案
execfile
曾经在 Python 2 中执行此操作,但在 Python 3 中已被替换为:
exec(open('myfile.py').read())
这实际上只是读取该文件(在运行时),然后 exec
就是结果。请注意,这与 C++ 所做的不太一样,C++ 的做法是预处理器在文件运行(或编译)之前完成所有这些工作,但这可能是最接近的事情。
如果你想让它成为某种可重用的函数,你可以这样做
import sys
def include(filename):
with open(filename, 'r') as f:
exec(f.read(), sys._getframe(1).f_globals, sys._getframe(1).f_locals)
include("myfile.py") # literally reads the file and evaluates it at runtime
调用exec(f.read(), sys._getframe(1).f_locals, sys._getframe(1).f_locals)
意味着exec
call 在父函数的作用域中运行。另请参阅 What is an alternative to execfile in Python 3? 的答案
关于python - #include 在 Python 中,但实际上只包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54810879/