python中的sed systemcall在macos10.12.4上生成SOH字符

2024-04-19 00:01:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用执行sed系统调用的python脚本替换.h文件中的某些字符。你知道吗

这是variables\orig.h中的一行,我希望用数组中的值替换其中的“10”:

#define PACKET_DELAY_TIME_A 10

如果我在bash中运行sed命令,那么

sed -E 's/(#define PACKET_DELAY_TIME_A).*/\1 2/' variables\ orig.h > variables.h

这完全正常,输出如预期,即“10”替换为“2”

但是,当我使用python系统调用来实现它时,例如

import os

pckt_delay_A = ["1","2","5","10","20"]
command = "sed -E 's/(#define PACKET_DELAY_TIME_A).*/\1 " + pckt_delay_A[1] + "/' variables\ orig.h > variables.h"
os.system(command)

这将生成SOH字符,而不是预期的“#define PACKET_DELAY_TIME_A”

\u0001 2

在我的输出文件中。你知道是什么原因造成的,以及如何得到预期的结果吗? 提前谢谢!你知道吗


Tags: 文件脚本timepacketos系统variables字符
1条回答
网友
1楼 · 发布于 2024-04-19 00:01:54

使用原始字符串。对于普通字符串,\1由Python解释,这意味着将带有ASCII代码1的字符放入字符串中,而不是传递给shell。你知道吗

command = r"sed -E 's/(#define PACKET_DELAY_TIME_A).*/\1 " + pckt_delay_A[1] + r"/' variables\ orig.h > variables.h"

或者,您可以用Python编写代码,使用它的re模块,而不是调用sed。你知道吗

相关问题 更多 >