【发布时间】:2014-10-20 18:31:07
【问题描述】:
我有一个包含以下行的文本文件
PIXEL_SCALE 1.0 # size of pixel in arc
要将其中的 1.0 替换为 0.3, 我尝试通过 python 脚本中的 subprocess.call 使用 sed。 以下 sed 正则表达式命令在 shell 中完美运行。
sed -i 's/^\(PIXEL_SCALE\s*\)\([0-9]*\.[0-9]*\)/\10.3/' filename.txt
但是等效的 subprocess.call 命令给了我以下错误。
subprocess.call(['sed','-i',"'s/^\(PIXEL_SCALE\s*\)\([0-9]*\.[0-9]*\)/\10.3/'",'filename.txt'])
sed: -e expression #1, char 1: unknown command: `''
我尝试通过在字符串前面加上 r 将字符串转换为原始字符串,还尝试了 .encode("UTF-8")。但他们没有任何效果。 这里可能出了什么问题?
谢谢
【问题讨论】:
-
尝试 subprocess.Popen("sed -i 's/^(PIXEL_SCALE\s*)([0-9]*\.[0-9]*)/\10.3/' 文件名。 txt",shell=True")
标签: python regex sed subprocess