簡體   English   中英

如何在Python中運行沒有擴展名的bash文件

[英]How to run a bash file with no extension in 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

Windows不支持在其二進制加載程序中解析Unix風格的shebang,而是要求您調用sh.exebash.exe的副本,將其路徑傳遞給腳本,然后傳遞腳本參數。 通常,您可以在MinGW或MSYS安裝中找到這些可執行文件。

在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'])

僅當您使用Unix終端(例如安裝Cygwin或使用Unix內置的Windows 10並安裝ImageMagick)時,才能在Windows上運行我的腳本。

如果從Windows上的Unix終端運行Python,則可以運行它。 參見http://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=32920 ,其中我運行了一個簡單的Imagemagick命令。

您可以使用轉換為Magick.Net的腳本版本在Windows上本機運行。 參見https://github.com/dlemstra/FredsImageMagickScripts.NET

以任何一種形式將我的腳本用於商業目的都需要獲得許可。 否則免費使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM