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

时间:2017-12-25 20:59:26

标签: python bash python-3.x

我想知道如何在Python中使用此页面中的脚本:

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

下载时,没有扩展名。我尝试将其重命名为" textcleaner.sh"并运行以下内容:

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

但是这样做会出现这个错误:

UPDATE users
  SET
    id = _users.id
FROM
(
  SELECT DISTINCT
    address,
    id
    FROM users
    WHERE id IS NOT NULL
    GROUP BY
      address,
      id
) _users
WHERE
    _users.address = users.address
    AND users.id IS NULL;

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

在Windows系统上,默认shell不是bash。重命名为.sh将无济于事,Windows会尝试execv您的文件,这不是Windows可执行文件,它解释了来自Windows的(错误)错误消息。

你能做的最好的事情是:

  • 下载&amp;在C:\MSYS2
  • 中安装MSYS2 ex
  • 按如下方式更改您的行:

代码:

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

答案 2 :(得分:0)

只有在使用Unix终端时才能在Windows上运行我的脚本,例如安装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

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