Python:将数据从一个文件传递到另一个文件
例如,我有两个文件,a.py和b.py。我希望b.py从a.py访问数据Python:将数据从一个文件传递到另一个文件,python,python-3.x,python-3.8,Python,Python 3.x,Python 3.8,例如,我有两个文件,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/pyt
#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'])
-
我想要的是:每次运行a.py时,都会生成一个新的数字。但是,每次运行b.py时,都会打印相同的数字,直到再次运行a.py为止 (Python 3.8) 编辑:
我已经看到了一些类似的问题,这些问题是用pickle和mmap解决的。但我不熟悉这些模块。他们能帮忙吗?我无法使示例正常工作。您可以使用
sys.argv
来实现:
#a.py
随机输入
导入子流程
def rnd():
返回random.random()
随机数=rnd()
如果随机数\u 1>0.5:
subprocess.Popen(['C:/Users/ex/AppData/Local/Programs/Python/Python38/Python.exe','b.py',str(随机数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程序中,它可以访问“安装”和“我的模块”,如下所示:
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)
您可以使用
sys.argv
进行以下操作:
#a.py
随机输入
导入子流程
def rnd():
返回random.random()
随机数=rnd()
如果随机数\u 1>0.5:
subprocess.Popen(['C:/Users/ex/AppData/Local/Programs/Python/Python38/Python.exe','b.py',str(随机数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程序中,它可以访问“安装”和“我的模块”,如下所示:
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)
你为什么要这样做?听起来你想把号码保存到一个文件里。但这取决于你为什么这么做在这种情况下,你不会把数据从一个文件传递到另一个文件。您有两个进程进行进程间通信。正如@JoelBerkeley所说,这取决于你想要什么。是否要保存此随机数?您希望将随机数生成和保存分离为两个“模块”吗?你想让两个不同的Python脚本互相通信吗?@JoelBerkeley这个例子就是一个例子。我认为进口会产生一个新的数字。我不想要一个新号码。我想我需要保存它,但我不知道如何保存。你为什么要这样做?听起来你想把号码保存到一个文件里。但这取决于你为什么这么做在这种情况下,你不会把数据从一个文件传递到另一个文件。您有两个进程进行进程间通信。正如@JoelBerkeley所说,这取决于你想要什么。是否要保存此随机数?您希望将随机数生成和保存分离为两个“模块”吗?你想让两个不同的Python脚本互相通信吗?@JoelBerkeley这个例子就是一个例子。我认为进口会产生一个新的数字。我不想要一个新号码。我想我需要保存它,但我不知道如何保存。谢谢。当我运行a.py时,它就工作了。但是,当我只运行b.py.Yes时,它会返回一条错误消息。当b.py单独运行时,您希望成为什么样的人?我希望:每次运行a.py时,都会生成一个新的数字。但是,每次运行b.py时,都会打印相同的数字,直到再次运行a.py。因此,如果有时单独运行b.py,为什么要使用a.py中的子进程来打开b.py?你应该把那个号码写进一个文件。我将更新我的答案。“那么,如果有时单独运行b.py,为什么要在a.py中使用subprocess来打开b.py呢?”这是一个简化的示例。“a.py”实际上是指下订单。“random_number_1”是唯一的订单ID。“b.py”将用于进行API调用,以使用订单ID检查订单的状态。谢谢。当我运行a.py时,它就工作了。但是,当我只运行b.py.Yes时,它会返回一条错误消息。当b.py单独运行时,您希望成为什么样的人?我希望:每次运行a.py时,都会生成一个新的数字。但是,每次运行b.py时,都会打印相同的数字,直到再次运行a.py。因此,如果有时单独运行b.py,为什么要使用a.py中的子进程来打开b.py?你应该把那个号码写进一个文件。我将更新我的答案。“那么,如果有时单独运行b.py,为什么要在a.py中使用subprocess来打开b.py呢?”这是一个简化的示例。“a.py”实际上是指下订单。“random_number_1”是唯一的订单ID。“b.py”将用于进行API调用,以使用订单ID检查订单的状态。