从另一个脚本运行python脚本永远重复

The*_*man 0 python

我在python中从第一个脚本运行第二个脚本时遇到问题.为了简化我正在做的事情,以下代码说明了我提交的内容

file1.py:

from os import system
x = 1
system('python file2.py')
Run Code Online (Sandbox Code Playgroud)

file2.py:

from file1 import x
print x
Run Code Online (Sandbox Code Playgroud)

麻烦的是当我运行file1.py x时会永远打印直到被打断.有什么我做错了吗?

zvo*_*one 5

from file1 import x导入整个文件1.导入时,会对所有内容进行评估,包括system('python file2.py').

您可以通过这种方式阻止递归:

if __name__ == "__main__":
    system('python file2.py')
Run Code Online (Sandbox Code Playgroud)

这将解决您当前的问题,但是,它似乎没有做任何有用的事情.

您应该选择以下两个选项之一:

  1. 如果file2有权访问file1,则system完全删除该调用,直接执行file2.

  2. 如果file2无权访问file1,并且您必须从file1启动file2进程,那么只需通过命令行将参数传递给它,不要从file2导入file1.

    system('python file2.py %s' % x)

(或者,更好一点,使用subprocess.call(['python', 'file2.py', x]))

在file2中,您可以访问以下值x:

x = sys.argv[1]
Run Code Online (Sandbox Code Playgroud)