我正在尝试在两个不同的python脚本之间传递信息。它们很长,所以为简化起见,这里有两个其他脚本,我遇到同样的问题:
a.py
f = open('test.txt', 'w+')
num = int(raw_input('How many are there: '))
tipe = raw_input('What kind are they: ')
if __name__ == '__main__':
from b import fxn
for x in xrange(num, num+11):
fxn()
num = x
f.close()
b.py
from a import num, tipe
def fxn():
print num, tipe
f.writelines(str(num)+', '+tipe)
我被要求输入num和tipe两次,然后第二次输入11次。
如何将a.py中的变量/文件传递给b.py,在b.py中编辑/ opedned /操作,然后传递回/关闭a.py?
另外,为什么我要求num和tipe两次,然后运行if name ==' main '下的代码?
答案 0 :(得分:0)
在Python脚本之间传递变量时,请记住,当您调用脚本时,调用脚本可以访问被调用脚本的命名空间。
话虽如此,你可以尝试一下:用代码
启动被调用的脚本from __main__ import *
这将授予对调用者脚本的命名空间(变量和函数)的访问权限。因为这些实际上并不是你将要操作的文件,如前所述,我将把它留给你应用于真实文件,希望这会有所帮助。
答案 1 :(得分:0)
你可以通过函数传递它们
<强> a.py 强>
f = open('test.txt', 'w+')
num = int(raw_input('How many are there: '))
tipe = raw_input('What kind are they: ')
if __name__ == '__main__':
from b import fxn
for x in xrange(num, num+11):
fxn(num, tipe, f) # Pass parameters num, tipe and file handle
num = x
f.close()
<强> b.py 强>
# from a import num, tipe --> **This is not required**
# receive inputs
def fxn(num, tipe, f):
print num, tipe
f.writelines(str(num)+', '+tipe)
执行a.py将导致
3 fruits
3 fruits
4 fruits
5 fruits
6 fruits
7 fruits
8 fruits
9 fruits
10 fruits
11 fruits
12 fruits
3个水果打印两次因为你先调用函数然后你正在增加num(通过重新分配)。相反,你可以让你的 a.py如下所示只打印3个水果:
f = open('test.txt', 'w+')
num = int(raw_input('How many are there: '))
tipe = raw_input('What kind are they: ')
if __name__ == '__main__':
from b import fxn
for x in xrange(num, num+11):
fxn(x, tipe, f) # Pass parameters num, tipe and file handle
f.close()
答案 2 :(得分:0)
您可以使用这种方式。
a.py
x=5
print x
b.py
import a
print a.x