我想将python脚本导入到另一个脚本中。
$ cat py1.py
test=("hi", "hello")
print test[0]
$ cat py2.py
from py1 import test
print test
如果我执行py2.py
:
$ python py2.py
hi
('hi', 'hello')
我可以将第一个来自print
的{{1}}静音吗?
我无法对from py1 import test
中的print
发表评论,因为它正在其他地方使用。
答案 0 :(得分:5)
py1.py使用if __name__=="__main__":
所以就像你的py1.py看起来像:
def main():
test=("hi", "hello")
print test[0]
if __name__=="__main__":
main()
这将允许您仍然正常使用py1.py,但是当您导入它时,除非您调用它,否则它将不会运行main()
函数。
答案 1 :(得分:4)
只需打开/ dev / null设备,并在需要安静时将sys.stdout
变量覆盖到该值。
import os
import sys
old_stdout = sys.stdout
sys.stdout = open(os.devnull, "w")
from py1 import test
sys.stdout = old_stdout
print test
答案 2 :(得分:1)
您可能需要考虑将其他脚本更改为在其他位置运行时仍然打印#39; - 如果您将py1作为shell命令运行,请尝试确保所有"可执行语句"在一个文件中是在一个块内。
if __name__ == "__main__":
print test
(见What does if __name__ == "__main__": do?)
这样可以解决根本问题,而不会让你做出奇怪的事情(将标准重定向,然后将其重新放回等),或打开文件并在if块上逐行执行。
答案 3 :(得分:1)
您可以使用以下方法实现此功能:
py1.py
test=("hi", "hello")
def print_test():
print(test)
def print_first_index():
print(test[0])
py2.py
import py1
py1.print_test()
正如MooingRawr所指出的,这将要求您更改使用py1.py
导入它的任何类,并调用py1.print_first_index()
函数,这可能不符合您的喜好。