我正在使用target.write命令编写此行
line4 = "do echo "$i|$( geoiplookup -f /usr/share/GeoIP/GeoIP.dat $i | cut -d' ' -f4 -n | sed -e 's/,$//' -e '/^$/d' )" >> $output;".format(name)
但我面临错误:
File "m.py", line 8
target.write('output=/var/www/html/Result/{0}/RIPs.txt;\necho > $output;\nfor i in $( cat /var/www/html/Result/{0}/PWIPs.txt );\ndo echo "$i|$( geoiplookup -f /usr/share/GeoIP/GeoIP.dat $i | cut -d' ' -f4 -n | sed -e 's/,$//' -e '/^$/d' )" >> $output;;\ndone'.format(name))
^
SyntaxError: invalid syntax
我也删除了代码
| sed -e 's/,$//' -e '/^$/d'
但是我得到的文件没有'-d后的字符串?
任何帮助?
由于
答案 0 :(得分:1)
只需将unix命令/ shell脚本包装为带有三引号的字符串,例如:
>>> import os
>>> cmd = r""" echo "Hello World" """
>>> os.system(cmd)
Hello World
正如@pts指出的那样,斜杠可能无法正确解析,因此请使用原始字符串,例如r"""..."""
。见http://docs.python.org/2/reference/lexical_analysis.html
答案 1 :(得分:1)
不要忘记r
,它会创建一个原始字符串文字。除非字符串中有"""
,否则这将有效。在这种情况下,请改用r'''...'''
。
import os
os.system(r"""do echo "$i|$( geoiplookup -f /usr/share/GeoIP/GeoIP.dat $i | cut -d' ' -f4 -n | sed -e 's/,$//' -e '/^$/d' )" >> $output;""".format(name))
答案 2 :(得分:0)
stackoverflows语法高亮应该给你一个提示:你使用"
引用字符串到python和字符串本身 - python应该如何区分它们?
您需要为字符串及其引号添加不同的引号,或者转义字符串中的引号。