我有一个utils.py包含名为的函数的文件f1()。
通过另一个Python脚本,我可以import utils或execfile('utils.py')可以访问f1()。两种方法有什么区别?
所以假设我有一个包含模块/类的zip文件.然后我读了这个文件 - 读取二进制文件("rb")将其存储到内存中.我如何将此zip文件存入内存并从中加载模块.我需要为此编写一个导入钩子吗?一个人不能简单地从内存中运行exec二进制zip数据,可以吗?
我知道从磁盘上的普通zip文件加载模块很简单,因为这是由python2.7自动完成的.然而,我; 想知道这是否可以通过记忆.
更新:很多人都提到从磁盘导入zip.问题是我想从内存NOT磁盘导入zip.我显然会逐字节地将它从磁盘读入内存.我想从构成zip文件的内存中获取所有这些字节,并将其用作常规导入.
我正在使用 PyZo(带有 python3.5),并且不知道如何使用PyZo 的 python 解释器或一般的python 解释器的参数来运行脚本。我在这里找到了 python3 的以下工作示例,但不知道如何将参数(例如 csv 文件 input_data.csv)传递给脚本
>>> exec(open("./script.py").read())
Run Code Online (Sandbox Code Playgroud)
这是在 iPython 中运行的:
In [1]: run script.py input_data.csv
Run Code Online (Sandbox Code Playgroud)
与上面的 iPython 命令等效的 python 3 是什么?
谢谢
注1
当从操作系统命令行运行带有参数的脚本时,您可以键入以下内容:
$ python script.py input_data.csv
当使用 python 解释器时,我期望能够运行 python 脚本,例如:
>>> script.py input_data.csv
即不调用 pythonexecutable,或使用'exec(open("./script.py").read())'等。对我来说,运行带参数的脚本是非常基本的事情,但显然不适合大多数用户。
我有一个帮助脚本,我想从主脚本调用它作为服务器.这个主要脚本如下所示:
Class Stuff():
def __init__(self, f):
self.f = f
self.log = {}
def execute(self, filename):
execfile(filename)
if __name__ == '__main__':
#start this script as server
clazz = Stuff()
#here helper_script name will be provided by client at runtime
clazz.execute(helper_script)
Run Code Online (Sandbox Code Playgroud)
现在,客户端将通过向主脚本(服务器)提供其名称来调用此帮助程序脚本.执行后我想在主脚本中保留辅助脚本的变量(即:a,b).我知道一种方法是将这些变量从辅助脚本返回到主脚本.但是有没有其他方法可以保留助手脚本的所有变量.这是帮助脚本的样子:
import os
a = 3
b = 4
Run Code Online (Sandbox Code Playgroud)
我尝试使用execfile和subprocess.
背景
我正在 Django 中编写一个简单的博客应用程序(数据通过模板语言传递)。博客的所有者将有权访问管理页面,他们将在其中更新数据库。现在我明白在生产中我将不得不隐藏安全密钥并关闭调试。
题
我在徘徊的是将代码推送到github是否会危及应用程序的安全性?
我需要找到如何在Notepad ++中编写后打开我的.py文件.我发现界面比Python窗口更有用.
在一个教程中,我跟随着这个人使用
execfile(pathway)
Run Code Online (Sandbox Code Playgroud)
但是execfile在3.3中不起作用.
3.x中是否有等价的陈述?
我在 python 脚本中运行 python 脚本时遇到问题,我根本不明白:
假设我们在同一目录中有 2 个文件:'init.py' 和 'text.py'
初始化.py:
X = 5
print("init.py was run")
Run Code Online (Sandbox Code Playgroud)
测试.py:
exec(open("./init.py").read())
print("X = %s" %X)
Run Code Online (Sandbox Code Playgroud)
如果我现在运行 test.py,我会得到
init.py 已运行
X = 5
但是,如果我将 test.py 更改为:
def func_call( filename):
exec(open(filename).read())
print("X = %s" %X)
func_call("./init.py")
Run Code Online (Sandbox Code Playgroud)
我得到:
init.py 已运行
回溯(最近一次调用最后一次):
文件“test.py”,第 5 行,位于
Run Code Online (Sandbox Code Playgroud)func_call("./init.py")文件“test.py”,第 3 行,在 func_call 中
Run Code Online (Sandbox Code Playgroud)print("X = %s" %X)名称错误:名称“X”未定义
有人可以向我解释为什么这会导致不同的结果吗?有解决方法吗?我的目标是通过运行 python 脚本并访问该 python 脚本中设置的变量来初始化大部分变量。
我有一个python脚本,它再次执行4-5 python脚本.出于性能原因,我想使用相同的解释器来执行所有脚本.
我怎么能处理这个问题?
python ×5
python-3.x ×3
execfile ×2
python-2.7 ×2
django ×1
exec ×1
file ×1
github ×1
import ×1
interpreter ×1
keyword ×1
security ×1
subprocess ×1