我有一个长字符串,例如:
cmd = "python %sbin/datax.py -p '-Drun=%s -Drpwd=%s -Drjdbc=%s -Dcond=%s -Dtable=%s \
-Dwun=%s -Dwpwd=%s -Dwjdbc=%s' %s" % ( DATAX_HOME,
rds_reader['username'],
rds_reader['password'],
sub_jdbc_url_generator(args.reader),
where_condition,
args.table,
rds_writer['username'],
rds_writer['password'],
sub_jdbc_url_generator(args.writer),
job_template_file)
我不想将所有-D
放在一行中,因为这看起来太长了,上面的代码实际上可以工作,但是它返回:
python /tmp/datax/bin/datax.py -p '-Drun=xxx ... -Dtable=demo -Dwun=yyy ...'
结果内部空间较长。我也阅读了一些问题,但是此字符串包含一些%s
要填充。
那么如何解决这个问题呢?还是其他优雅的写作方式?任何帮助表示赞赏。
预期输出:
python /tmp/datax/bin/datax.py -p '-Drun=xxx ... -Dtable=demo -Dwun=yyy ...'
答案 0 :(得分:1)
Python将连接两个相邻的字符串。引用的字符串之间的间距将被丢弃。例如:
print("something " "something")
输出:
something something
因此,您可以简单地执行以下操作:用两个完整的字符串将行扩展为带有行连续符(\
)或将这些字符串用括号括起来:
cmd1 = "python blah blah "\
"more {} {} blah".format('abc',123)
cmd2 = ("python blah blah "
"{} {} "
"more stuff").format('abc',123)
print(cmd1)
print(cmd2)
输出:
python blah blah more abc 123 blah
python blah blah abc 123 more stuff