我有这个字符串:' ServerAlias {hostNameshort}.* www.{hostNameshort}.*'.format(hostNameshort=hostNameshort)但是它一直给我一个语法错误。该行应该是等效的bash:echo " ServerAlias ${hostOnly}.* www.${hostOnly}.*" >> $prjFile请注意,第一个字符串是myFile.write函数的一部分,但这不是问题,我什至无法获得足够有意义的字符串来让我运行程序。追溯: File "tomahawk_alpha.py", line 89 ' ServerAlias {hostNameshort}.* www.{hostNameshort}.*'.format(hostNameshort=hostNameshort) ^但是,无论我如何更改该'符号,它似乎都不起作用。我究竟做错了什么?回应@mgilson: myFile = open(prjFile, 'w+') myFile.write("<VirtualHost 192.168.75.100:80>" " ServerName www.{hostName}".format(hostName=hostName) ' ServerAlias {hostNameshort}.* www.{hostNameshort}.*'.format(hostNameshort=hostNameshort) " DocumentRoot ", prjDir, "/html" ' CustomLog "\"|/usr/sbin/cronolog /var/log/httpd/class/',prjCode,'/\{hostName}.log.%Y%m%d\" urchin"'.format(hostName=hostName) "</VirtualHost>") myFile.close()我在每一行中都有自己的myFile.write行,但它仅产生第一行,然后退出。因此,我假定只调用一次并将其间隔开就可以达到预期的效果。
2 回答
慕森王
TA贡献1777条经验 获得超3个赞
自动字符串连接仅适用于字符串文字:
"foo" "bar"
结果是 "foobar"
但是,以下操作无效:
("{}".format("foo")
"bar")
这类似于您在做什么。解析器看到这样的东西:
"{}".format("foo") "bar"
(因为它会连接括号未结束的行),这显然是无效的语法。要修复它,您需要显式连接字符串。例如:
("{}".format("foo") +
"bar")
或对整个字符串使用字符串格式设置,而不是一次只对其中一部分进行格式化。
添加回答
举报
0/150
提交
取消