如何在一個py程式裡執行另一個py程式?

來源:互聯網
上載者:User
在搜尋引擎上搜過,未果
問題的詳細描述:假設在案頭有一個“A.py”,當A.py被啟動並執行時候會自動開啟“B.py”(不在案頭,而是在其他路徑,並且這個路徑已知)。

實現效果類似於如下代碼:

import osstart_dire = r"E:\*.txt"os.system("explorer.exe %s" %start_dire)

回複內容:

考慮到題主是新手,我就多說幾個方法

0. runpy.run_path('my_awesome_program.py')
首選這個方法,全平台通用


1. 直接import那個檔案(如果那個檔案沒加__name__=='__main__'判斷的話),如果檔案名稱是變數的話,用__import__('my_awesome_program')

2. os.startfile('my_awesome_program.py')
這是windows-only的,自己用用還行,稍微大一點的項目就別用了

3. os.system('python "%s"' % 'my_awesome_program.py')
但如果對方電腦的python不在%path%裡就掛了,因此還是 僅限自己用

4.用subprocess,命令列同上,用法請自行百度或者查文檔
同樣也 僅限自己用

5. 你試試execfile('my_awesome_program.py'),我沒試過,不確定行不行
UPDATE: 我試過了, 可以,好像這個也是全平台通用的。Python不知道,不過Perl語言有一個內建變數$^X,其內容是正在執行當前指令碼的Perl解譯器的路徑。可以用那個變數的內容去執行另一個Perl指令碼:
system($^X, "another_script.pl");
先讀.py的檔案,然後使用eval函數執行.py的檔案內容,或者用import至少有兩種方法,假定b.py在E盤的根目錄:
1. 把B.py所在的路徑加入系統路徑:
import syssys.path.append('E:/')import bb.foo()
把explorer.exe換成python.exe試試
還可以通過import來執行其他檔案裡的代碼
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.