![](/img/trans.png)
[英]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.