python3.4 "for loop" 中的缩进错误 (pyvmomi)
python3.4 indentation error in "for loop" (pyvmomi)
试图在循环中调用 python3.4 class 方法。
但是得到这个“TabError: inconsistent use of tabs and spaces in indentation
”
我查看了 "vim" 和 "gedit/sublime" 中的代码,它们没有显示明显的错误。
难道不是缩进而是其他错误?
谢谢。
$ cat pyvmomi-loop.py
from __future__ import (absolute_import, division,
print_function, unicode_literals)
from builtins import *
import atexit
import sys
sys.path.insert(0, '/usr/lib/python2.7/site-packages')
import pyVmomi
import argparse
import atexit
import itertools
from pyVim.connect import SmartConnect, Disconnect
import humanize
from pyVim import connect
from pyVmomi import vmodl
from pyVmomi import vim
## cred
host="1.2.3.4"
user="aa\bb"
password="$!@DD"
port=443
## Ignore certificate error
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
pass
else:
print ("Ignoring SSL Error")
ssl._create_default_https_context = _create_unverified_https_context
## Fetch id an dpw
def GetArgs():
parser = argparse.ArgumentParser(
description='Process args for retrieving all the Virtual Machines')
parser.add_argument('-s', '--host', required=True, action='store',
help='Remote host to connect to')
parser.add_argument('-o', '--port', type=int, default=443, action='store',
help='Port to connect on')
parser.add_argument('-u', '--user', required=True, action='store',
help='User name to use when connecting to host')
parser.add_argument('-p', '--password', required=False, action='store',
help='Password to use when connecting to host')
args = parser.parse_args()
return args
## Method to fetch VM info
def printHost(host):
try:
summary = host.summary
stats = summary.quickStats
hardware = host.hardware
cpuUsage = stats.overallCpuUsage
memoryCapacity = hardware.memorySize
memoryCapacityInMB = hardware.memorySize/MBFACTOR
memoryUsage = stats.overallMemoryUsage
freeMemoryPercentage = 100 - (
(float(memoryUsage) / memoryCapacityInMB) * 100
)
print ("--------------------------------------------------")
print ("Host name: ", host.name)
print ("Host CPU usage: ", cpuUsage)
print ("Host memory capacity: ", humanize.naturalsize(memoryCapacity,
binary=True))
print ("Host memory usage: ", memoryUsage / 1024, "GiB")
print ("Free memory percentage: " + str(freeMemoryPercentage) + "%")
print ("--------------------------------------------------")
except Exception as error:
print ("Unable to access information for host: ", host.name)
print (error)
pass
## Main method
def main():
# argsCred = GetArgs()
try:
service_instance = connect.SmartConnect(host=host,
user=user,
pwd=password,
port=port,
)
## What to do when exiting
atexit.register(connect.Disconnect, service_instance)
##Content object
content = service_instance.RetrieveContent()
container = content.rootFolder # starting point to look into
viewType = [vim.VirtualMachine] # object types to look for
recursive = True # whether we should look into it recursively
## Create a view
containerView = content.viewManager.CreateContainerView(
container, viewType, recursive)
## Loop through all obhects to return name and VMware tools version
children = containerView.view
for child in children:
if child.summary.guest is not None:
try:
tools_version = child.summary.guest.toolsStatus
osFam = child.summary.guest.guestId
print("VM: {}, VMware-tools: {}".format(child.name, tools_version))
print("VM: {}, OS Fam: {}".format(child.name, osFam))
except:
print("Vmware-tools: None")
except vmodl.MethodFault as error:
print("Caught vmodl fault : " + error.msg)
return -1
return 0
## Start program
if __name__ == "__main__":
main()
这段代码有缩进问题。
改变
for child in children:
if child.summary.guest is not None:
try:
tools_version = child.summary.guest.toolsStatus
osFam = child.summary.guest.guestId
print("VM: {}, VMware-tools: {}".format(child.name, tools_version))
print("VM: {}, OS Fam: {}".format(child.name, osFam))
except:
print("Vmware-tools: None")
到
for child in children:
if child.summary.guest is not None:
try:
tools_version = child.summary.guest.toolsStatus
osFam = child.summary.guest.guestId
print("VM: {}, VMware-tools: {}".format(child.name, tools_version))
print("VM: {}, OS Fam: {}".format(child.name, osFam))
except:
print("Vmware-tools: None")
如果那是你的整个 .py 文件,错误在第 114 和 116 行。
不要复制粘贴此代码,因为可能会有太多空格。只需缩进我提到的行中的代码即可。
编辑:在 vim 或 gedit 或其他文本编辑器中编写代码不是一个好习惯。看看Pycharm :)
试图在循环中调用 python3.4 class 方法。
但是得到这个“TabError: inconsistent use of tabs and spaces in indentation
”
我查看了 "vim" 和 "gedit/sublime" 中的代码,它们没有显示明显的错误。
难道不是缩进而是其他错误?
谢谢。
$ cat pyvmomi-loop.py
from __future__ import (absolute_import, division,
print_function, unicode_literals)
from builtins import *
import atexit
import sys
sys.path.insert(0, '/usr/lib/python2.7/site-packages')
import pyVmomi
import argparse
import atexit
import itertools
from pyVim.connect import SmartConnect, Disconnect
import humanize
from pyVim import connect
from pyVmomi import vmodl
from pyVmomi import vim
## cred
host="1.2.3.4"
user="aa\bb"
password="$!@DD"
port=443
## Ignore certificate error
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
pass
else:
print ("Ignoring SSL Error")
ssl._create_default_https_context = _create_unverified_https_context
## Fetch id an dpw
def GetArgs():
parser = argparse.ArgumentParser(
description='Process args for retrieving all the Virtual Machines')
parser.add_argument('-s', '--host', required=True, action='store',
help='Remote host to connect to')
parser.add_argument('-o', '--port', type=int, default=443, action='store',
help='Port to connect on')
parser.add_argument('-u', '--user', required=True, action='store',
help='User name to use when connecting to host')
parser.add_argument('-p', '--password', required=False, action='store',
help='Password to use when connecting to host')
args = parser.parse_args()
return args
## Method to fetch VM info
def printHost(host):
try:
summary = host.summary
stats = summary.quickStats
hardware = host.hardware
cpuUsage = stats.overallCpuUsage
memoryCapacity = hardware.memorySize
memoryCapacityInMB = hardware.memorySize/MBFACTOR
memoryUsage = stats.overallMemoryUsage
freeMemoryPercentage = 100 - (
(float(memoryUsage) / memoryCapacityInMB) * 100
)
print ("--------------------------------------------------")
print ("Host name: ", host.name)
print ("Host CPU usage: ", cpuUsage)
print ("Host memory capacity: ", humanize.naturalsize(memoryCapacity,
binary=True))
print ("Host memory usage: ", memoryUsage / 1024, "GiB")
print ("Free memory percentage: " + str(freeMemoryPercentage) + "%")
print ("--------------------------------------------------")
except Exception as error:
print ("Unable to access information for host: ", host.name)
print (error)
pass
## Main method
def main():
# argsCred = GetArgs()
try:
service_instance = connect.SmartConnect(host=host,
user=user,
pwd=password,
port=port,
)
## What to do when exiting
atexit.register(connect.Disconnect, service_instance)
##Content object
content = service_instance.RetrieveContent()
container = content.rootFolder # starting point to look into
viewType = [vim.VirtualMachine] # object types to look for
recursive = True # whether we should look into it recursively
## Create a view
containerView = content.viewManager.CreateContainerView(
container, viewType, recursive)
## Loop through all obhects to return name and VMware tools version
children = containerView.view
for child in children:
if child.summary.guest is not None:
try:
tools_version = child.summary.guest.toolsStatus
osFam = child.summary.guest.guestId
print("VM: {}, VMware-tools: {}".format(child.name, tools_version))
print("VM: {}, OS Fam: {}".format(child.name, osFam))
except:
print("Vmware-tools: None")
except vmodl.MethodFault as error:
print("Caught vmodl fault : " + error.msg)
return -1
return 0
## Start program
if __name__ == "__main__":
main()
这段代码有缩进问题。
改变
for child in children:
if child.summary.guest is not None:
try:
tools_version = child.summary.guest.toolsStatus
osFam = child.summary.guest.guestId
print("VM: {}, VMware-tools: {}".format(child.name, tools_version))
print("VM: {}, OS Fam: {}".format(child.name, osFam))
except:
print("Vmware-tools: None")
到
for child in children:
if child.summary.guest is not None:
try:
tools_version = child.summary.guest.toolsStatus
osFam = child.summary.guest.guestId
print("VM: {}, VMware-tools: {}".format(child.name, tools_version))
print("VM: {}, OS Fam: {}".format(child.name, osFam))
except:
print("Vmware-tools: None")
如果那是你的整个 .py 文件,错误在第 114 和 116 行。 不要复制粘贴此代码,因为可能会有太多空格。只需缩进我提到的行中的代码即可。
编辑:在 vim 或 gedit 或其他文本编辑器中编写代码不是一个好习惯。看看Pycharm :)