[英]Python: Pass Data From One File to Another
例如,我有兩個文件,a.py 和 b.py。 我希望 b.py 從 a.py 訪問數據。
#a.py
import random
import subprocess
def rnd():
return random.random()
random_number_1 = rnd()
if random_number_1 > 0.5:
subprocess.Popen(['C:/Users/ex/AppData/Local/Programs/Python/Python38/python.exe', 'b.py'])
——
#b.py
#get the number generated from a.py and print it.
我想要什么:每次運行 a.py 時,都會生成一個新數字。 但是,每次運行 b.py 時,都會打印相同的數字,直到再次運行 a.py。
(Python 3.8)
編輯:我已經看到了一些類似的問題,舊版本的 Python 用 pickle 和 mmap 解決了。 但我對這些模塊並不熟悉。 他們會有所幫助嗎? 我無法讓示例發揮作用。
您可以使用sys.argv
:
#a.py
import random
import subprocess
def rnd():
return random.random()
random_number_1 = rnd()
if random_number_1 > 0.5:
subprocess.Popen(['C:/Users/ex/AppData/Local/Programs/Python/Python38/python.exe', 'b.py', str(random_number_1)])
在 b.py 中,您可以訪問該號碼:
#b.py
import sys
random_number_1 = float(sys.argv[1])
print(sys.argv[1])
那么什么是sys.argv
? 例如,當您在命令提示符中寫入時:
C:\> pip install my_module
在 pip 程序中,它可以像這樣訪問“安裝”和“my_module”:
import sys
sys.argv[0] # full path of program (for example C:\Users\User\AppData\Local\Programs\Python\Python37\Scripts\pip.exe)
sys.argv[1] # "install"
sys.argv[2] # "my_module"
這樣你只能傳遞一次這個數字,如果你在a.py中改變它,它在b.py中不會改變。 此外,如果您願意,可以將該數字寫入文件:
#a.py
import random
import subprocess
import pickle
def rnd():
return random.random()
random_number_1 = rnd()
with open("C:\\data.txt","wb") as f:
f.write(pickle.dumps(random_number_1))
if random_number_1 > 0.5:
subprocess.Popen(['C:/Users/ex/AppData/Local/Programs/Python/Python38/python.exe', 'b.py'])
在 b.py 中,您可以讀取該文件:
#b.py
import pickle
with open("C:\\data.txt","rb") as f:
random_number_1 = pickle.load(f)
print(random_number_1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.