如何在python

时间:2018-12-26 20:22:03

标签: python import

我想在python中显示文件1到文件2的列表的内容

我只是在该文件中提供一个示例代码,其中包含一个列表和一个变量。我只是想通过导入在file2中显示该列表的内容。代码给出错误

从文件1导入列表1,p

ImportError:无法导入名称列表1

我的代码是:

文件1:

if __name__ == '__main__':
    list1 = ['a','b']
    p = 123
    print list1
    print p

文件2:

from file1 import list1,p
if __name__ == '__main__':
    list2 = ['p','q']
    pb = 321
    print list2
    print pb
    print list1
    print p

4 个答案:

答案 0 :(得分:1)

file1中的

您有if __name__ == '__main__':,但是由于导入了file1,因此在这种情况下不是这样。对于file来说可能更合适:

list1 = ['a','b']
p = 123
if __name__ == '__main__':
    print list1
    print p

在您的情况下,似乎print语句仅在直接调用file1的情况下用于调试。但是必须将list1p定义为导入,在这种情况下,可能不应该运行print语句(我从您的代码中假设)。

答案 1 :(得分:0)

只需删除if语句:

file1.py:

list1 = ['a','b']
p = 123

file2.py:

from file1 import list1,p
print(list1) #output: ['a', 'b']

答案 2 :(得分:0)

I would make your list1 and p functions instead of just variables (see below):

file1.py

if __name__ == '__main__':
    list1 = ['a','b']
    p = 123
    print(list1)
    print(p)

def list1():
    list1 = ['a','b']
    print(list1)

def p():
    p = 123
    print(p)

And then in your second file call them like so:

file2.py

from file1 import *
if __name__ == '__main__':
    list2 = ['p','q']
    pb = 321
    print(list2)
    print(pb)
    list1()
    p()

You could also more simply just do this instead:

list1 = ['a','b']
p = 123
if __name__ == '__main__':
    print(list1)
    print(p)

Hope this helps!

答案 3 :(得分:0)

在file1中,您应该使用 if __name__ == '__main__' ,而不要使用 if __name__ == 'file1' 。这是因为当您在文件2中导入该文件时,文件1的__name__不是 __main__,而是文件名,即 {{1 }}

因此,使用类似的方法会有所帮助:

文件1:

file1

file2:

if __name__ == 'file1':
    list1 = ['a','b']
    p = 123
    print(list1)
    print(p)

运行file2时的输出:

from file1 import list1,p
if __name__ == '__main__':
    list2 = ['p','q']
    pb = 321
    print(list2)
    print(pb)
    print(list1)
    print(p)

当我使用Python3而不是Python2时,可以从打印语句中删除括号。

但是在文件1中使用['a', 'b'] 123 ['p', 'q'] 321 ['a', 'b'] 123 是多余的。