从命令行运行Python exe

时间:2014-05-01 14:58:12

标签: python

我是Python新手,所以浪费我的时间。但这是一个简单的问题。我有一个python程序如下。

import time
import os
import subprocess

def camera_play(cmd):

  if cmd == 1:
     cmd = 'raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 &'
     pid = subprocess.call(cmd, shell = True)

     cmd1 = 'LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -w /usr/local/www"'

     pid1 = subprocess.call(cmd1, shell = True)
  elif cmd == 0:
     pid.kill()
     pid1.kill()

我使用Pyinstaller创建了exe程序。如何使用输入参数从命令行运行该exe。 我像

一样跑
camera_play 1
camera_play -i 1

它不起作用。感谢

2 个答案:

答案 0 :(得分:1)

当您在Linux下运行时,您不必创建exe文件。 你的代码不会做任何事情,因为只有一个函数,但它永远不会被调用。

定义后必须使用此功能。

    #!/usr/bin/python

    import...

    def camera_play(cmd):
        ...

    if len(sys.argv)>1:
        cmd = sys.argv[1]
    else:
        cmd = WHAT YOU WANT???
    camera_play(cmd)

要从命令行调用脚本,您有两种可能:

    python myscript

    ./myscript

请注意,cmd似乎接受1或0这很奇怪!如果0,pid vars不会存在! 你必须认真思考你想要做什么。 你也可以考虑使用subprocess.Popen

答案 1 :(得分:0)

看看这个链接(http://www.tutorialspoint.com/python/python_command_line_arguments.htm),你有两个问题:

  1. 您的计划中没有主要内容
  2. 您没有处理命令行参数
  3. 在文件末尾你需要这样的东西:

        if __name__ == "__main__":
          camera_play(sys.argv[1])
    

    这与文件顶部的#!/ bin / python结合使用,具有正确的unix可执行权限,应允许您从带命令的命令行运行它。