首先,我了解如果 name ==“ main ”并且不应该包含对main()的调用,我不应该返回任何内容。
我想做的是通过一个文件从远处的文件路径调用python文件(导入文件/功能不是一种选择)
当前我正在使用它来调用我的文件
result = subprocess.getstatusoutput('python farAwayFile.py')
但是,我想从该文件中获得类似于...的结果
("success", "I am farAwayFile print statement")
在我的farAwayFile.py
def main():
print('I am farAwayFile print statement')
return "success"
if __name__ == "__main__":
main()
如果在我的farAwayFile.py中,我更改了...
if __name__ == "__main__":
return main()
我得到了想要的结果,但是我在函数定义之外有一个return语句,该语句会干扰任何pylint。
所以我的问题是,如何从farAwayFile.py返回结果?
答案 0 :(得分:1)
在UNIX shell中,返回值在0到255之间,因此您不能在最终的return语句中返回字符串(可以,但是不能使用返回值)。
使用subprocess.stout/stderr
获得打印语句; subprocess.returncode
获取返回码。
最好的方法是导入模块。
您还可以将farAwayFile的返回值写到文件中(使用pickle),然后在主程序中将其读回。
答案 1 :(得分:1)
我想做的是通过一个文件从远处的文件路径调用python文件(导入文件/功能不是一种选择)
我认为假设您不知道,而不是您不。
您已经知道文件的路径,因为您要将其作为子进程运行,那么为什么不将该路径添加到PATH? ;)
import sys
sys.path.append("/your/path/here")
from farAwayFile import main
IDE会抱怨他们不知道导入的模块(因为它没有显示在其依赖关系中;您可以对其进行修复,以便建议能够正确显示),如果他们检查了PEP8,您将收到有关导入的投诉,而不是位于文件顶部。但这会起作用。
这样一来,您就无需更改模块中的任何内容,也无需像注释中所建议的那样将任何内容写入磁盘。