(我使用的是 ubuntu 12.04)
我编写了这个python程序:
#!/bin/sh
# -*- coding: utf-8 -*-
#Created on Tue Nov 12 19:44:50 2013
#@author: matthew
import os
print "Multiple Command Runner"
print "<Made by Matthew Cherrey>"
print "-------------------------"
numbcommand = 0
allcoms = []
while 1:
numbcommand = numbcommand + 1
command = raw_input(" Command: ")
allcoms.append(command)
decide = raw_input("Press [Enter] to and another command, press [r] to run all commands: ")
if decide == "r":
break
commands = ""
first = True
for item in allcoms:
if first:
commands = item
else:
commands = commands + " && " + item
os.system(commands)
我希望能够在终端中运行它。我使用 Python 编辑器:蜘蛛它有一个“在系统终端中运行”的选项。每当我这样做时,我的程序都能完美运行。我可以输入多个命令,并让它们全部运行。当我将文件设置为可执行文件并运行/home/matthew/.runallcommands.py --python
或时/home/matthew/.runallcommands.py
,首先将光标变成“t”,然后当我单击某个地方时,会拍摄屏幕该区域的照片并将其保存为我的主文件夹中名为“OS”的照片。然后我收到此错误消息:
matthew@matthew-MS-7721:~$ /home/matthew/.runallcommands.py --python
Warning: unknown mime-type for "Multiple Command Runner" -- using "application/octet-stream"
Error: no such file "Multiple Command Runner"
Warning: unknown mime-type for "<Made by Matthew Cherrey>" -- using "application/octet-stream"
Error: no such file "<Made by Matthew Cherrey>"
/home/matthew/.runallcommands.py: 13: /home/matthew/.runallcommands.py: numbcommand: not found
/home/matthew/.runallcommands.py: 14: /home/matthew/.runallcommands.py: allcoms: not found
/home/matthew/.runallcommands.py: 17: /home/matthew/.runallcommands.py: Syntax error: "(" unexpected (expecting "do")
我不确定这是否与我调用文件的方式有关,因为我的程序在 spyder 终端中运行正常。
答案1
你的 python 命令被解释为 shell 命令,例如print "Multiple Command Runner"
正在寻找文件要打印的该名称(带有相关的 MIME 类型)。
据我所知,--python
向 shell 脚本添加命令行参数不会导致它被解释为 python 脚本 - 要做到这一点,你必须将#!/bin/sh
'shebang' 更改为适当的 python shebang,例如
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Created on Tue Nov 12 19:44:50 2013
#@author: matthew
import os
.
.
.
然后你就可以通过使文件可执行来运行它
chmod +x /path/to/yourfile.py
并执行如下命令
/path/to/yourfile.py
如果yourfile.py
在当前目录,可以使用相对路径./yourfile.py
来执行。