从另一个.py文件(python)使用sys.argv
我有一个文件(test.py),它从控制台/bash接收从另一个.py文件(python)使用sys.argv,python,bash,argv,sys,Python,Bash,Argv,Sys,我有一个文件(test.py),它从控制台/bash接收sys.argv: import sys def main(): ans = int(sys.argv[1])**int(sys.argv[1]) with open('test.out', 'w') as fout: fout.write(str(ans)) if __name__ == '__main__': main() 通常,我只需执行$python test.py 2即可生成test.
sys.argv
:
import sys
def main():
ans = int(sys.argv[1])**int(sys.argv[1])
with open('test.out', 'w') as fout:
fout.write(str(ans))
if __name__ == '__main__':
main()
通常,我只需执行$python test.py 2
即可生成test.out
文件。但是我需要从另一个脚本调用test.py中的main()
函数
我可以在(call.py
)中执行以下操作,但是是否有其他方法可以在`test.py?中运行将参数传递到sys.argv
到main()
import os
number = 2
os.system('python test.py '+str(number))
请注意,我不能修改
test.py
,我在call.py
中还有一个main(),它做其他事情。你可以按原样使用你的程序。因为,不管python调用哪个文件,所有python文件都将获得传递的命令行参数
但是您可以使main
函数接受sys.argv
作为默认参数。因此,默认情况下,main
将始终采用sys.argv
。当您传递一个不同的列表时,它将接受第一个元素并对其进行处理
test.py
呼叫.py
您可以按原样使用程序。因为,不管python调用哪个文件,所有python文件都将获得传递的命令行参数 但是您可以使
main
函数接受sys.argv
作为默认参数。因此,默认情况下,main
将始终采用sys.argv
。当您传递一个不同的列表时,它将接受第一个元素并对其进行处理
test.py
呼叫.py
不需要修改
test.py
您仍然可以按原样运行它,只需执行call.py:
import test
test.main()
然后,
$python call.py ARG
仍然可以工作。因为您已经在测试中导入了sys
,所以不需要重新导入它,除非您想在call.py
中使用sys
。请注意,sys.argv[0]==“call.py”
nottest.py
如果通过调用使用test.py。无需修改test.py
,您仍然可以按原样运行它,只需执行call.py:
import test
test.main()
然后,$python call.py ARG
仍然可以工作。因为您已经在测试中导入了sys
,所以不需要重新导入它,除非您想在call.py
中使用sys
。请注意,如果通过调用使用test,则sys.argv[0]==“call.py”
不是test.py
。这样写:
import sys
def main(num):
ans = int(num)**int(num)
with open('test.out', 'w') as fout:
fout.write(str(ans))
if __name__ == '__main__':
main(sys.argv[1])
这样,您的main()
函数就不必知道sys.argv-它只处理传递给它的参数。这样写:
import sys
def main(num):
ans = int(num)**int(num)
with open('test.out', 'w') as fout:
fout.write(str(ans))
if __name__ == '__main__':
main(sys.argv[1])
这样,您的
main()
函数就不必知道sys.argv-它只处理传递给它的参数。创建一个函数来执行计算和文件写入,可以从任何其他模块调用该函数:
power.py:
import sys
def power(arg):
ans = arg ** arg
with open('test.out', 'w') as fout:
fout.write(str(ans))
if __name__ == '__main__':
power(int(sys.argv[1]))
其他.py:
import power
power.power(2)
创建一个函数来执行计算和文件写入,可以从任何其他模块调用该函数: power.py:
import sys
def power(arg):
ans = arg ** arg
with open('test.out', 'w') as fout:
fout.write(str(ans))
if __name__ == '__main__':
power(int(sys.argv[1]))
其他.py:
import power
power.power(2)