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