我在这方面苦苦挣扎,也许是我无法看到但却很简单......
import subprocess, pprint
cmd = subprocess.Popen('bhosts', shell=True, stdout=subprocess.PIPE)
errorCode = 0
description =""
arrayprova=[]
for linea in cmd.stdout:
if "ok" not in linea and "closed" not in linea and "HOST_NAME" not in linea:
arrayprova = linea.split()
description = description + "host " + arrayprova[0] + "is " + arrayprova[1]
errorCode = 1
print arrayprova[1]
if errorCode == 0:
description ="Everything is just fine."
print description
我收到此错误:
File "bhosts_nodes_check.py", line 9
description = description + "host " + arrayprova[0] + "is " + arrayprova[1]
^
SyntaxError: invalid syntax
答案 0 :(得分:4)
您正在编辑器中混合制表符和空格:
>>> '''\
... arrayprova = linea.split()
... description = description + "host " + arrayprova[0] + "is " + arrayprova[1]
... '''
' arrayprova = linea.split()\n\t\tdescription = description + "host " + arrayprova[0] + "is " + arrayprova[1] \n'
>>> # ^^^ spaces here - but tabs here ^^^^
...
Python将标签扩展到每个第8列,但您可能将编辑器设置为仅使用4个空格作为选项卡,这进一步增加了混淆。您的arrayprova
行缩进为8个空格,而下一行的两个标签扩展为 16 空格。
不要使用混合缩进样式;坚持只有标签或只有空格。
您可以将大多数编辑器配置为仅使用空格 进行缩进,其中按 TAB 键会导致写入空格。这是Python styleguide (PEP 8)建议的内容:
标签或空格?
切勿混合标签和空格。
缩进Python最流行的方法是仅使用空格。第二种最流行的方式是仅使用标签。使用制表符和空格混合缩进的代码应转换为仅使用空格。当使用-t选项调用Python命令行解释器时,它会发出有关非法混合制表符和空格的代码的警告。使用-tt时,这些警告会出错。强烈推荐这些选项!
对于新项目,强烈建议仅使用空格。大多数编辑都具有使这很容易做到的功能。