Python字符串格式在脚本中运行时无法正常工作

时间:2015-09-24 14:22:21

标签: python

我创建了一个python脚本,其中一个函数是运行shell命令。使用REPL格式化构建命令的字符串时,它按预期工作。但是,当在脚本函数本身中运行它时,格式化了!有没有人遇到这个问题,知道为什么会发生这种情况?对于下面的示例,我已将命令执行切换为简单的打印方法,因此我将能够立即获得格式化结果。 详情如下:

变量:

  • rifs_names - 输入'list',包含两个类型为'str'的文章
  • server_name - 输入'str'

功能:

def get_rifs_status():
    for rifs in rifs_names:
        print 'mco shell run -I {0} "sc qc {1} 5000"'.format(server_name, rifs)

REPL输出(好):

mco shell run -I <server_name> "sc qc <rifs> 5000"
mco shell run -I <server_name> "sc qc <rifs> 5000"

脚本输出(Messed-up):

 5000"ell run -I <server_name> "sc qc <rifs>
 5000"ell run -I <server_name> "sc qc <rifs>

我尝试了无穷无尽的格式选项,没有任何作用.. 我真的很疯狂,任何帮助都会受到赞赏。

以下是有关我的python env的详细信息,以防万一:

Python 2.6.6 (r266:84292, Jun 18 2012, 14:18:47) 
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2

1 个答案:

答案 0 :(得分:4)

您的rifs值包含回车符\r,将“写入位置”放回到行的开头,因此5000"部分写在那里。

剥去这个角色:

print 'mco shell run -I {0} "sc qc {1} 5000"'.format(server_name, rifs.rstrip('\r'))

演示:

>>> server_name = '<server_name>'
>>> rifs = '<rifs>\r'
>>> print 'mco shell run -I {0} "sc qc {1} 5000"'.format(server_name, rifs)
 5000"ell run -I <server_name> "sc qc <rifs>
>>> print 'mco shell run -I {0} "sc qc {1} 5000"'.format(server_name, rifs.rstrip('\r'))
mco shell run -I <server_name> "sc qc <rifs> 5000"