【发布时间】:2021-03-02 16:04:53
【问题描述】:
我在使用带有 os.system() 的 sed 命令时遇到问题
path= "/backup/verify/2020-11-19_test_pg_basebackup_daily_verify/postgresql.conf"
sed = "sed -i.bak 's/^\(port = \).*/\15437/' "+path
print(sed)
os.system('{}'.format(sed))
我打印sed 看看出了什么问题,这就是我得到的:
sed -i.bak 's/^\(port = \).*/l37/' /backup/verify/2020-11-19_test_pg_basebackup_daily_verify/postgresql.conf
为什么5437 发生了变化?同样,当我尝试在 os.system 中编写整个命令而不使用字符串 sed 时,我会收到以下错误:
-bash-4.2$ ./func.py verify 2020-11-19_test_pg_basebackup_daily
File "./func.py", line 56
os.system('sed -i.bak 's/^\(port = \).*/\15437/' /backup/verify/2020-11-19_test_pg_basebackup_daily_verify/postgresql.conf')
^
SyntaxError: invalid syntax
【问题讨论】:
-
引号中有引号。你能指望什么?使用 python 功能和正则表达式,而不是运行外部(非便携式)命令。