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

2024-04-29 21:57:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

下载时没有分机。我试着把它改名为“文本清理器.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

Tags: inpyliblocallinecallusersappdata
3条回答

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

Windows不支持在其二进制加载程序中解析Unix样式的shebang,因此需要调用sh.exebash.exe的副本,将路径传递给脚本,后跟脚本的参数。您通常可以在MinGW或MSYS安装中找到这些可执行文件。你知道吗

只有在使用Unix终端(如安装Cygwin或使用Windows 10内置Unix并安装ImageMagick)的情况下,才能在Windows上运行我的脚本。你知道吗

如果在Windows上从unix终端运行Python,就可以运行它。请参阅http://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=32920,在这里我运行了一个简单的Imagemagick命令。你知道吗

您可以使用转换为的脚本版本在Windows上本机运行它魔法.Net. 见https://github.com/dlemstra/FredsImageMagickScripts.NET

将我的脚本以任何形式用于商业目的都需要获得许可证。否则免费使用。你知道吗

相关问题 更多 >