我必须使用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
答案 0 :(得分:1)
当您的文件句柄(写入模式)仍处于打开状态时,正在执行python脚本中的sed
命令。尝试先关闭它。
请注意,即使从python中执行命令行sed
,也不需要文件句柄。 sed将自己管理。
另外,正如Ken Hampson在评论中提到的,使用with
construct进行文件阅读/写作会更好。