2016-07-27 144 views
1

我有一個Python腳本(scr1.py),它調用另一個Python腳本(scr2.py),它們都在相同的路徑上。當我打開CMD並運行scr1.py時,一切正常。在Makefile中運行Python腳本

我想在與腳本不在同一路徑上的Makefile中運行scr1.py。 scr1.py正在執行,但調用scr2.py失敗。我認爲問題在於scr1.py搜索Makefile目錄而不是腳本目錄。 我該如何解決它?

代碼:

import os 
import scr2 
fileinfo = os.stat('scr2.py') 

if os.path.isfile("infofile.txt"):   
    file=open("infofile.txt",'r')  
    lm = file.read() 
    file.close() 
    if lm == str(fileinfo.st_mtime): 
     #Do_Something 
    else: 
     scr2 
else: 
    scr2 
    file = open("infofile.txt",'w') 

OK,我只是發現那位另一個問題。 當您導入另一個文件時,它會在導入行中運行此文件! 這意味着這不是導入文件的正確方法,除非您在要運行腳本的位置使用導入行,但它非常難看。

回答

0

由於這兩個文件都在同一個目錄中,所以在第二個文件名之前添加當前工作目錄路徑怎麼樣?

import os 
import scr2 
fileinfo = os.stat(os.getcwd() + '/scr2.py') 

if os.path.isfile("infofile.txt"):   
    file=open("infofile.txt",'r')  
    lm = file.read() 
    file.close() 
    if lm == str(fileinfo.st_mtime): 
     #Do_Something 
    else: 
     scrcompile         
else: 
    scrcompile      
    file = open("infofile.txt",'w') 
+0

哦,對不起,我現在看到我犯了一個錯誤。我更改了腳本的名稱,以便更容易理解。不幸的是,我很着急,所以我忘了檢查他們是否都改變了。 scrcompile我的意思是scr2。這是不會運行的部分。 – DrorNohi

+0

經過一些修改後,我設法讓這個工作。 os.getcwd()完成了這項工作。 – DrorNohi