尝试在循环中调用python3.4类方法。
但得到这个“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()
答案 0 :(得分:0)
此代码存在缩进问题。
更改
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:)