执行Python脚本时出错

0 投票
4 回答
1194 浏览
提问于 2025-04-18 16:19

当我尝试用参数执行一个Python脚本时,脚本失败了,并显示了以下错误:

-bash: syntax error near unexpected token `"Lary",'

我尝试这样执行脚本:

display("Lary", 43, "M")

我的代码

#! /usr/bin/python

def display(name, age, sex):
  print "Name: ", name
  print "Age: ", age
  print "Sex: ", sex

我尝试给脚本设置执行权限(chmod 755 test.py),但总是得到同样的错误。

这是怎么回事呢?

4 个回答

0

如果你想给一个Python程序传递参数,最简单的方法就是用 sys.argv

比如说,你的程序文件叫做 my_program.py:

#!/usr/bin/env python
import sys

print "Arguments passed:"
print sys.argv

然后你可以这样运行你的程序:

./my_program.py this is "A test" 1 2 3
0

你并不是直接运行一个调用了函数 display("Lary", 43, "M") 的脚本。

你应该在终端里用 python my_script.py 或者 ./my_script.py 来执行这个脚本。

你遇到的是一个 bash 的错误,而不是 python 的错误。要让一个 python 脚本可以直接执行,你只需要运行 chmod +x my_script.py 这个命令。

~$ display("Lary", 43, "M")
bash: syntax error near unexpected token `"Lary",'

my_script.py:

import sys

def display(name, age, sex):
  print "Name: ", name
  print "Age: ", age
  print "Sex: ", sex
name = sys.argv[1]
age = sys.argv[2]
sex = sys.argv[3]
display(name, age, sex)

~$ python my_script.py foo 43 male
Name:  foo
Age:  43
Sex:  male
1

这个错误信息的意思是你是在 bash 终端里调用你的函数:

dsm@winter:~/coding$ display("Lary", 43, "M")
bash: syntax error near unexpected token `"Lary",'

你需要在 Python 控制台里调用它:

dsm@winter:~/coding$ python -i display.py
>>> display("Larry", 43, "M")
Name:  Larry
Age:  43
Sex:  M

你不能像现在这样从 bash 终端直接调用 Python 函数。

3

如果我理解得没错,你想从命令行运行类似这样的代码:

    ./test.py "Lary" 43 "M"

为了做到这一点,你需要正确设置权限。不过,你还需要通过 sys 模块来获取命令行参数:

    #! /usr/bin/python
    import sys

    def display(name, age, sex):
      print "Name: ", name
      print "Age: ", age
      print "Sex: ", sex

    display(sys.argv[1],sys.argv[2],sys.argv[3])

sys.argv 会返回一个列表,这个列表里包含了命令行的参数,其中第一个元素 sys.argv[0] 是文件名(在这个例子中是 ./test.py)。当然,你最好加一些参数检查,确保参数数量足够等等。此外,还要确保正确解析这些命令。例如,如果年龄应该是一个整数,你需要这样写 age = int(sys.argv[2]),因为 sys.argv 是一个字符串列表,这在大多数编程语言中都是这样。

撰写回答