繁体   English   中英

使用 bash 运行 python 脚本

[英]Using bash to run python script

我有一个 python 脚本,它接收一个 .txt 文件并输出一个 .txt 文件。 我想创建一个 bash 文件,我可以从桌面单击该文件以执行 python 脚本。

到目前为止,我有:

#!/bin/bash
cd /Desktop; 
cd ./py-data;
python ./grab.py;
exit;

这只是打开了python脚本。 理想情况下,我想单击 bash 脚本并让 python 脚本在后台运行,只需生成输出而无需打开 python 脚本。

解决方案:

  1. 将 py.bat 更改为 py.command

  2. 在终端:

    $ cd ~/Desktop $ chmod 755 py.command

  3. 在 vim 上打开代码并放入(来自: ./configure : /bin/sh^M : bad interpreter ):

    :set fileformat=unix

  4. 代码也改了:

    #!bin/bash cd ~/Desktop python search.py exit;

在 MacOS 上,将脚本文件的名称设置为以.command结尾,并使文件可执行。 使用该文件扩展名,您可以双击该文件,它将运行Terminal应用程序,并且任何输出(到 stdout / stderr)都将显示在弹出的终端窗口中以供执行。

=== /Users/john/Desktop/foo.command ===
#!/bin/bash
echo 'hello'

然后:

===  At command prompt===
$ cd ~/Desktop
$ chmod 755 foo.command

双击foo.command ,你会看到弹出窗口:

Last login: Thu Oct 5
/Users/john/Desktop/foo.command ; exit;
iMac:~/Desktop john$ /Users/john/Desktop/foo.command ; exit;
hello
logout
[Process completed]

在弹出窗口中,您会看到很多行,以及您的输出(“hello”)。

在您的特定示例中,我认为您有两个问题:

首先,您提到/Desktop ,这可能不是您想要的,因为用户的桌面是~/Desktop 这会导致您的脚本失败。

其次,您将在弹出窗口中看到的输出是您的脚本直接写入标准输出的输出。 如果您的脚本正在写入另一个文件,它可能工作得很好,但是您不会在弹出窗口中看到信息(它将在您写入的任何文件中。)所以这取决于您的grab.py文件实际上是什么做。

最后,你说“在后台运行”。 从技术上讲,这不是正在发生的事情,因为它将在单独的前台进程中运行。 我想这就是你的意思。

您可以在 bash 脚本上尝试chmod 777 ,然后删除扩展名。 如果您使用的是 macOS,那么它应该可以工作。 对 Linux 不太确定,但值得一试。

chmod +x *filename*

在终端执行上面的命令然后制作bash文件如下

cd Desktop/*folder*/
python3 *filename.py*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM