如何在我拥有的两个不同的python脚本之间传递变量

时间:2016-07-30 02:14:10

标签: python variables import module

我正在尝试在两个不同的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 '下的代码?

3 个答案:

答案 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