2017-06-19 36 views
0

我認爲自己是python的初學者。我目前正在編寫代碼,它工作的很好。 問題是,爲了嵌入linux bash命令,需要使用大量的子進程庫調用。 這樣我就可以將1000行代碼重寫爲80行。 下面是我的一些代碼:是否適合編寫帶有大量調用python的子進程庫的代碼

if not OCRized(a): 
    p0=subprocess.check_call(["pdftk",a,"burst"]) 
    print "splitting Pdf was successful........." 
    for i in range(len(pdf.pages)): 
     if (i>8): 
     nameBurst="pg_00"+str(i+1)+".pdf" 
     else: 
     nameBurst="pg_000"+str(i+1)+".pdf" 

     nameJPG="converted-"+str(i)+".jpg" 

     p1=subprocess.check_call(["convert","-density","300",nameBurst,"-depth","8",nameJPG]) 
     print "Conversion to jpg was successful....." 
     nameHocr="converted-"+str(i) 
     p=subprocess.check_call(["tesseract",nameJPG,nameHocr,"-l","eng","hocr"]) 
     print "tesseract did the job for the ",str(i+1),"page" 
     name2="page"+str(i)+".pdf" 
     p2=subprocess.check_call(["bash","-c","hocr-pdf .> reconstructed.pdf "]) 
     print " Reconstruction is complete" 
else: 
     p=subprocess.check_call(["tesseract",'1.png','f1',"-l","eng"]) 

所以可能這種方法可能會產生什麼問題? (代碼工作,但我仍然不相信)

+1

當大多數腳本調用bash時,可能是時候考慮用bash編寫整個東西了。 – zondo

+0

我想過,但我需要很多python funcionalities especillay調用某些API –

回答

1

這是拋出開放自以爲是的答案門的一個問題,所以...

主要的事情要考慮的是:「它的工作原理? 「如果是的話,你應該問的另一個問題是,「我怎樣才能讓它變得更好?」

從python進行10個bash調用是否合理?或者從bash發出10個python調用(使用python -m <your_API_here>)?在一天結束時,你需要考慮你的用例,哪種方法更有意義。你打算將這個軟件分發給數百萬用戶嗎?這需要平臺獨立嗎?等等。


經過你的代碼,如果你想用bash實現它們,你的代碼似乎可以用管道進一步壓縮。如果你想調用某些Python API,你總是可以像現在調用子進程一樣分支腳本。主要問題是,這是值得的努力。問自己上面的一些問題可能會幫助你做出決定。

相關問題