2024-05-15 10:49:26 发布
网友
我有一个python文件,我不是它的维护者,它看起来像下面的代码。在不修改代码以将所有内容都放在if\uuu名称下的情况下,有没有办法从另一个模块导入它,以便我可以以编程方式执行它并传递参数?在
import configargparse if __name__ == '__main__': args = get_args() #more code to execute...
你不能,在大多数情况下。这些代码没有以有用的方式公开。如果能够修改源文件,典型的解决方案是将所有代码移出if __name__ == '__main__'块,并将其放入main()函数中。在
if __name__ == '__main__'
main()
可以使用execfile函数来做您想做的事情,如here所述,但这是一个丑陋的解决方案,原因有很多(因为您作弊并使用它来获取文件名,而模块级变量可能不会如您预期的那样引用为module.var,如该页上的一些评论所述)。在
execfile
module.var
即使在这个例子中,也不清楚是否存在传递参数的有用方法。我想你可以显式地设置sys.argv,但是看看这已经有多恶心了。。。在
sys.argv
你不能,在大多数情况下。这些代码没有以有用的方式公开。如果能够修改源文件,典型的解决方案是将所有代码移出
if __name__ == '__main__'
块,并将其放入main()
函数中。在可以使用
execfile
函数来做您想做的事情,如here所述,但这是一个丑陋的解决方案,原因有很多(因为您作弊并使用它来获取文件名,而模块级变量可能不会如您预期的那样引用为module.var
,如该页上的一些评论所述)。在即使在这个例子中,也不清楚是否存在传递参数的有用方法。我想你可以显式地设置
sys.argv
,但是看看这已经有多恶心了。。。在相关问题 更多 >
编程相关推荐