【发布时间】:2014-09-21 00:27:17
【问题描述】:
我正在探索将一个大型项目从 python 2 移植到 3。
因为我目前只是测试,还有其他一些原因。我改变改变一切
#!/usr/bin/python
or
#!/usr/bin/env python
or
#!/usr/bin/env python2.6
到python3。除此之外,我希望添加两个换行符和评论。因此,以上述之一开头的每个 python 文件现在都以:
#!/usr/bin/env python3
# 4 spaces is the indentation standard. Make sure that Tab equals 4 spaces.
我当前的代码将遍历所有目录并一次更改一个 python 文件,并为此和其他几个更改。我的问题在于以下功能:
def usePy3_addcomment(filename):
try:
subprocess.check_call(['sed','-i.sedbak','s_#!/usr/bin/.*python.*_#!/usr/bin/env python3\n\n# 4 spaces is the indentation standard. Make sure that Tab equals 4 spaces._',filename])
except:
print("ERROR: usePy3_addcomment failed on '%s'" % filename)
return None
问题出在\n 中。他们留在这里是为了表达我想做的事情。我尝试过使用 endline 文字,使用括号并添加 \,但无济于事。
错误信息是:
$sed: -e expression #1, char 48: unterminated `s' command
【问题讨论】:
-
您可以尝试 subprocess.Popen(cmd,shell=True) 其中 cmd 可以是 shell 上的工作命令
-
@vks 谢谢,但这产生了同样的错误。
标签: python regex python-3.x sed