[英]Get location of bash script that called python script
我找不到我的问题的解决方案,我希望这不是重复的,有人可以帮助我。
我有一个bash脚本可以调用的python脚本,但是我无法检索bash脚本的目录。
我不能使用os.getcwd(因为我不会从其自己的目录中调用bash脚本)。
我无法在bash脚本中设置自定义env变量,因为我无法控制bash脚本(实际上有2个bash脚本,而我只能控制一个)
而且bash脚本可以由另一个bashscript启动,但是我只想要最后一个调用我的python脚本的脚本。
谢谢
编辑:总结问题:
->我想在我的python脚本中检索“调用我”的bash脚本的目录
我认为从python脚本内部不可能实现。 它必须由直接或间接调用它的bash脚本来驱动。
您可以使用问题@Benjamin在注释中张贴的问题中提到的方法,在bash脚本本身中找到bash脚本的路径,然后将其作为参数传递给python脚本,或设置env变量。
我知道你不想这么做。 但是诸如psutil
类的其他方法也将取决于父脚本的运行方式。 如果您可以确保可以使用父脚本的绝对路径而不是调用脚本的方式来运行父脚本,那么@SocketPlayer对此问题的回答将非常适合您。 我的Macbook上有以下作品
import psutil
calling_script = psutil.Process().parent()
print ("calling_script", calling_script.cmdline()[1])
在python脚本中:(将其作为cmd参数传递的示例)
import argparse
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
'callers_path', help="the shell script calling this python script must provide it's path here", type=str)
args = parser.parse_args()
callers_path = args.callers_path
print ("callers_path", callers_path)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.