[英]Using sys.argv from another .py file - python
我有一个文件(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.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()可以做其他事情。
无需修改test.py
您仍然可以call.py:
运行它,只需执行call.py:
import test
test.main()
那么$ python call.py ARG
仍然可以使用。 由于您已经在测试中导入了sys
,因此除非您想在call.py
使用sys
,否则无需重新导入它。 需要注意的是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了-它只处理传递给它的参数。
您可以按原样使用程序。 因为,无论python调用什么文件,所有python文件都会获得传递的命令行参数。
但是您可以使main
函数接受sys.argv
作为默认参数。 因此, main
默认情况下始终采用sys.argv
。 当您传递其他列表时,它将采用第一个元素并对其进行处理。
import sys
def main(args = sys.argv):
ans = int(args[1])**int(args[1])
with open('test.out', 'w') as fout:
fout.write(str(ans))
import sys, test
test.main()
创建一个函数来进行计算和文件编写,可以从任何其他模块调用该函数:
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]))
other.py:
import power
power.power(2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.