从另一个.py文件(python)使用sys.argv

从另一个.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.

我有一个文件(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(),它做其他事情。

你可以按原样使用你的程序。因为,不管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”
not
test.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)