[英]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.