在Linux上运行的脚本给出了NameError

时间:2016-12-09 16:22:08

标签: python python-3.x

所以我在Linux服务器上运行了一个python脚本。代码:

#!/bin/python

databaseRun = input("Do you want to run all databases: ")

if databaseRun == "yes":
  print("yes")
else: 
  print("no")

返回错误:

Traceback (most recent call last):
File "./db_upg.py", line 3, in <module> databaseRun = input("Do you want to run all databases: ")
File "string", line 1, in <module> NameError: name 'yes' is not defined

现在,如果我将此代码输入PyCharm,它运行没有问题。我错过了什么?基本上你会把是或否将是唯一的回答

2 个答案:

答案 0 :(得分:1)

您可能使用Python 2而不是Python 3来运行它。尝试使用python3 <scriptname>代替python <scriptname>运行它。并将shebang行分别从#!/bin/python更改为#!/usr/bin/python3

在Python 2中,input()将输入读作代码而不是字符串。因此,当您键入yes时,它会将其读作未定义的变量yes。如果您想在标记建议的情况下使用Python 2而不是Python 3运行此操作,请使用raw_input()代替input()。 Python 2&#39; raw_input()返回一个字符串,类似于Python 3&#39; input()

答案 1 :(得分:0)

无论你运行什么python版本,这都适用于:

#!/bin/python
import sys

if sys.version_info[0] == 3:
    inp = input
else:
    inp = raw_input

databaseRun = inp("Do you want to run all databases: ")

if databaseRun == "yes":
  print("yes")
elif databaseRun == "no":
  print("no")
else:
  print("invalid input")