sed命令从python中使用时从文件中删除整个文本

时间:2014-09-16 01:17:16

标签: python shell sed

我必须使用python编写一个文件,我已经成功完成了。在对该文件进行一些写操作之后,我需要删除与之匹配的文本 字符串(不区分大小写)。

从执行sed命令我得到了所需的结果,但是当使用python中的相同命令时,删除文件中的整个内容。

我无法弄清楚脚本出了什么问题。

print ("working directory "+ os.getcwd()+'\n')

file = open ("testFile.txt","w")

for fileName in glob.glob('*.doc'):
    ## reading multiple doc files
    file.write () ## write to the file

cmd = "sed -i '/person/Id' ./testFile.txt"
os.system(cmd)
file.close()

此代码正在从testFile.txt文件中删除整个文本。

当我从命令行执行相同的sed命令时,会从testFile.txt中删除包含person的行。

sed -i '/person/Id' ./testFile.txt

1 个答案:

答案 0 :(得分:1)

当您的文件句柄(写入模式)仍处于打开状态时,正在执行python脚本中的sed命令。尝试先关闭它。

请注意,即使从python中执行命令行sed,也不需要文件句柄。 sed将自己管理。

另外,正如Ken Hampson在评论中提到的,使用with construct进行文件阅读/写作会更好。