簡體   English   中英

從另一個python腳本運行python腳本並將變量傳遞給它

[英]Run a python script from another python script and pass variables to it

還有一些類似的問題。 但是,或者答案沒有涵蓋對我來說很關鍵的特定部分,或者我只是聽不懂。 所以,讓我解釋一下我的問題:

我想創建3個python腳本。 我們稱它們為p1.py,p2.py和p3.py。 當我運行p1時,它將收集時間信息

import datetime    
captureTime = datetime.datetime.now()

然后它將更改日期的格式並將其與變量一起存儲,如下所示

folderName = captureTime.strftime('%Y-%m-%d-%H-%M-%S')

然后,它將創建一個由字符串“ folderName”的值命名的文件夾。

在這部分之后,我不知道該怎么辦。

p1應該運行p2和p3,並將'folderName'的值傳遞給它們,然后停止; 並且,p2和p3應該在以“ folderName”值命名的文件夾下創建文件。

謝謝。

在p1中:

import p2
args = ['foo', bar]
p2.main(args)

在p2中:

def main(args): 
    do_whatever()

if __name__ == '__main__':
  main()

p3將具有與p2類似的結構

您可以利用子流程模塊來執行外部命令。 最好先從簡單得多的命令入手,以掌握所有內容。 下面是一個虛擬的示例:

import subprocess
from subprocess import PIPE

def main():
    process = subprocess.Popen('echo %USERNAME%', stdout=PIPE, shell=True)
    username = process.communicate()[0]
    print username #prints the username of the account you're logged in as

    process = subprocess.call('python py1.py --help', shell=True)
    process = subprocess.call('python py2.py --help', shell=True)
    process = subprocess.call('python py3.py --help', shell=True)

if __name__ == '__main__':
    main()

這將從echo %USERNAME%獲取輸出並將其存儲。 它還將運行您的三個腳本,但對它們不起作用。 您可以如第一個示例所示,將腳本的輸出PIPE並將其反饋回您的下一個腳本。

不是執行此操作的唯一方法(您可以導入其他腳本)。 如果您希望有一個外部主腳本來控制和操縱所有子腳本,那就很好了。

如果您尚未檢查我們的argparse ,則應該。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM