如何在Python中运行没有扩展名的bash文件

问题描述 投票:0回答:3

我想知道如何在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
python bash python-3.x
3个回答
1
投票

在Windows系统上,默认shell不是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
投票

Windows不支持在其二进制加载器中解析Unix风格的shebang,并且需要您调用sh.exebash.exe的副本,将其传递给脚本的路径,然后是脚本的参数。您通常可以在MinGW或MSYS安装中找到这些可执行文件。


0
投票

您可以在Windows上运行我的脚本,仅当您使用Unix终端时,例如安装Cygwin或使用Unix内置的Windows 10并安装ImageMagick。

如果从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

出于商业目的使用任何形式的脚本都需要获得许可。否则使用是免费的。

© www.soinside.com 2019 - 2024. All rights reserved.