2017-06-19 1 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関数が必要です –

答えて

1

これは、考慮すべき

主なものは独断答えにオープンドアを投げる質問です、そう...:「それは動作しますか? "はいの場合は、「どうすればそれを改善できますか?」という質問をする必要があります。

pythonから10回のbash呼び出しを行うのは意味がありますか?または、bashから10個のpythonコール(python -m <your_API_here>を使用)を作成するには?終わりには、ユースケースを検討する必要があります。どちらのアプローチが理にかなっています。このソフトウェアを何百万人ものユーザーに配布しますか?これはプラットフォームに依存しない必要がありますか?等々。


あなたのコードを見ると、多くのコードがパイプでさらに圧縮できるように思えます。特定のPython APIを呼び出す場合は、いつでもサブプロセスを呼び出すのと同じ方法でスクリプトをforkすることができます。主な質問は、努力する価値があるということです。上記の質問のいくつかをお尋ねすると、あなたの決定に役立つかもしれません。

関連する問題