python字符串格式错误

时间:2018-08-09 00:45:23

标签: python python-3.x

我正在处理一个脚本,该脚本接收一个包含IP地址的文本文件(每行一个),然后将每个IP传递给非Python程序命令。

结果是错误:

  

TypeError:在字符串格式化期间并非所有参数都已转换

import subprocess
list='c:\cmc_list.txt'

with open(list,'r') as cmc_list:

for i in cmc_list:
  racadm_command = "racadm -r %s -u root -p calvin getslotname" % i

output = subprocess.Popen(racadm_command % i, stdout = subprocess.PIPE, 
 shell=True).communicate()[0]

print(racadm_command, output)

2 个答案:

答案 0 :(得分:1)

传递给Popen命令的字符串已经被格式化,因此它没有%可以消耗i。删除“%i”,我想你会没事的。

答案 1 :(得分:0)

我相信您只打算进行一次格式化

import subprocess
cmc_list='c:\cmc_list.txt'

racadm_command_template = "racadm -r {} -u root -p calvin getslotname"

with open(cmc_list,'r') as f:
    for ip in f:
        cmd = racadm_command_template.format(ip)
        output = subprocess.Popen(cmd, stdout = subprocess.PIPE, shell=True).communicate()

        print(cmd, output[0])

我还建议在密码提示中使用getpass,或从环境变量导入。此外,请勿打印出密码,请更改默认密码