2017-12-25 16 views
0

で拡張子のないbashのファイルを実行する方法:私はPythonで、このページからスクリプトを使用することができますどのように思っていたのPython

http://www.fmwconcepts.com/imagemagick/textcleaner/index.php

それをダウンロードし、拡張子はありません。私は「textcleaner.sh」に名前を変更しようとしたし、次のコマンドを実行します。

import subprocess 

subprocess.check_call(['textcleaner.sh', '-g', '-e', 'normalize', 'input_image.jpg', 'output_image.jpg']) 

をしかし、そうするとき、私はこのエラーを取得:

Traceback (most recent call last): 
    File "C:/Users/ikdem/PycharmProjects/McAffeeeeeee/bash test.py", line 11, in <module> 
    subprocess.check_call(['textcleaner.sh', '-g', '-e', 'normalize', 'opl-small-1.jpg', 'output.jpg']) 
    File "C:\Users\ikdem\AppData\Local\Programs\Python\Python35\lib\subprocess.py", line 579, in check_call 
    retcode = call(*popenargs, **kwargs) 
    File "C:\Users\ikdem\AppData\Local\Programs\Python\Python35\lib\subprocess.py", line 560, in call 
    with Popen(*popenargs, **kwargs) as p: 
    File "C:\Users\ikdem\AppData\Local\Programs\Python\Python35\lib\subprocess.py", line 950, in __init__ 
    restore_signals, start_new_session) 
    File "C:\Users\ikdem\AppData\Local\Programs\Python\Python35\lib\subprocess.py", line 1220, in _execute_child 
    startupinfo) 
OSError: [WinError 193] %1 is not a valid Win32 application 

答えて

1

Windowsシステムでは、デフォルトのシェルはbashではありません。名前を変更すると.shに名前を変更するとWindowsがexecvというファイルをWindowsに実行しようとしますが、これはWindowsの(悪い)エラーメッセージを説明しています。次のように

  • ダウンロード& C:\MSYS2
  • の変化にあなたのラインをMSYS2のEXをインストールします:あなたができる

    最善のことはすることです

コード:

subprocess.check_call([r'C:\MSYS2\bin\sh','-c','textcleaner.sh', '-g', '-e', 'normalize', 'input_image.jpg', 'output_image.jpg']) 
+1

ありがとうございました。これは、エラーが消えるように思われました。もう別のエラーが発生しましたが、動作させようとします! –

1

Windowsは、Unixスタイルのシェバングを解析するためのサポートを持っていませんそのバイナリローダ内で、代わりにsh.exeまたはbash.exeのコピーを呼び出し、スクリプトへのパスとそれに続くスクリプトへの引数を渡す必要があります。通常、これらの実行可能ファイルは、MinGWまたはMSYSインストールの一部として見つけることができます。

0

Windowsでスクリプトを実行できますCygwinのインストールやUnixで構築されたWindows 10の使用、ImageMagickのインストールなど、Unix端末。

Windows上のUnix端末からPythonを実行すると、Pythonを実行できます。 http://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=32920を参照してください。単純なImagemagickコマンドを実行します。

Windows上では、そのスクリプトのバージョンをMagick.Netに変換してネイティブに実行できます。 https://github.com/dlemstra/FredsImageMagickScripts.NET

商用目的のために使用するいずれかのスクリプトを使用するには、ライセンスを取得する必要があります。それ以外の場合は無料です。

関連する問題