对于循环输出每行一个字符

时间:2016-01-23 08:34:01

标签: python for-loop

我正在编写一个快速的python脚本包装器来查询我们的崩溃计划服务器,这样我就可以从多个站点收集数据,然后将其转换为json进行迁移,我已经完成了大部分工作。它可能有点难看,但我距离获取需要传递给json模块的数据只有一步之遥,因此我可以格式化报告所需的数据。

脚本应该查询ldap,从站点列表中获取名称列表,然后创建一个命令(可以工作)。

但是当在for循环中打印列表时,它会打印出每个字符,而不是每个字符。如果我只打印列表,它会在一行上打印出每个名称。由于用户名不正确,这显然可以通过REST调用。

'''
Crashplan query script

Queries the crashplan server using subprocess calls and formats the output

'''

import subprocess
import json

password = raw_input("What password do you want to use: ")

sitelist = ['US - DC - Washington', 'US - FL - Miami', 'US - GA - Atlanta', 'CA - Toronto']
cmdsites = ""


for each in sitelist:
    cmdsites = cmdsites + '(OfficeLocation={})'.format(each)

ldap_cmd = "ldapsearch -xLLL -S OfficeLocation -h ldap.local.x.com -b cn=users,dc=x,dc=com '(&(!(gidNumber=1088))(|%s))' | grep -w 'uid:' | awk {'print $2'}" % cmdsites

users = subprocess.check_output([ldap_cmd], shell=True)

##### EVERYTHING WORKS UP TO THIS POINT #####

for each in users:
    #    subprocess.call(['curl -X GET -k -u "admin:'+password+'" "https://crashplan.x.com:4285/api/User?username='+each+'@x.com&incBackupUsage=true&strKey=lastBackup"'], shell=True)   ### THIS COMMAND WORKS IT JUST GETS PASSED THE WRONG USERNAME
    print each           #### THIS PRINTS OUT ONE LETTER PER LINE ####

print type(users)   #### THIS PRINTS OUT ONE NAME PER LINE ####

1 个答案:

答案 0 :(得分:3)

您将输出作为字符串,在迭代时,每次迭代生成一个字符

你应该split it by line breaks

for each in users.splitlines():  
    print each