簡體   English   中英

Python:將數據從一個文件傳遞到另一個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM