[英]What's the best way to visualize sequence of events within pandas in Python?
[英]What's the best way to run a sequence of commend from another python file with global variables shared?
上下文:我正在尝试将代码从Matlab迁移到python。 在matlab中,如果您将两个文件放在同一文件夹下,则只需键入文件名即可运行其他脚本中的推荐行或功能。 即在file1.m中,如果我键入file2.m,它将自动运行file2.m中的所有代码行,并且在同一工作空间中共享全局变量。
我试图在python中做类似的事情。 但是,即使在线阅读了这些帖子,我仍然有些困惑。
相关文章:
来自:
从另一个python脚本运行python脚本,并传入args
subprocess.Popen和os.system之间的区别
使用子进程在python脚本中输入内容来调用python脚本
因此,我有以下选择,每个选项似乎都有其独特的优势,但是这些帖子之间没有进行清晰的比较。
import
os.system
os.popen()
subprocess.Popen()
subprocess.call()
execfile
或简单地
exec(open(dir+'\\a.py').read())
print(x) #outputs 1
我需要它工作的方式是让let file2.py在file1.py中使用相同的变量,并且file2.py生成的变量可以由file1.py自由读取,就像在一个文件中运行一系列推荐命令一样,或在Matlab的同一工作区中运行它。
有人提到execfile无法传递参数??? 因此最好的方法是使用os.system,其他一些人也提到子过程比os.system更好,但是我不确定使用子过程是否会不同地影响变量的使用? 也有人使用subprocess.Propen(),有人使用subprocess.call()。 但是我的样子,exec(open(dir +'\\ a.py')。read())似乎是我正在考虑的最接近的方法。
我应该使用哪一个,为什么会更好?
您能否在基本情况下制作“目录”或表格,我应该使用哪种类型的情况?
from file2 import *
将使file2
中的所有定义在当前文件的名称空间中可用。
每个人都说不要这样做是有充分理由的。 但这可能是您所要解决的最简单,最Python化的解决方案。
正确的方法是认真考虑当前代码需要了解的关于file2
,并仅使这些内容可用于导入。 一种常见的封装技术是定义一个类,然后仅导入该类。
from file2 import FileTwoClass
instance = FileTwoClass()
instance.frobnicate(parameterfile='./params')
for goose in instance.geese(color='green'):
flaps = instance.flaps(goose)
instance.hovercraft().eject(goose, flaps+1)
如您所见-纯属虚构! -例如,很多功能可以间接地作为对象属性和方法公开。 理想情况下,根本不应该有任何全局变量-也许是类属性或单个对象实例列表将成为媒介,但是如果没有有关代码的任何详细信息,就不可能提出任何具体的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.