我的文件数据低于数据。
List<PogProdData> list = new ArrayList<PogProdData>();
Integer[] pogNums = list.stream().map(PogProdData::getPogNumber).toArray(Integer[]::new);
我只想在Set device是Austin-Backup时复制编辑下的命令。
edit 48
set dst 192.168.4.0 255.255.255.0
set device "Tague-VPN"
set comment "Yeshtel"
edit 180
set dst 64.219.107.45 255.255.255.255
set device "Austin-Backup"
set comment "images.gsmc.org"
我正在尝试将测试文件内容写入新文件(脚本),如果发现命令“set comment”Yeshtel“”,我想删除新文件中的内容。我试图删除但它没有发生。我是Python新手,你能告诉我什么是Prob吗?
我知道在写入模式下重新打开同一个文件会清除内容..
答案 0 :(得分:1)
我怀疑问题是您将同一个文件打开两次,一次打开newfile
,第二次打开a
。虽然当它以a
打开然后关闭它时应该被截断,但是如果文件系统已经缓存它们,那么您在newfile
上所做的写操作可能仍会出现,直到写入截断版本为止。
我建议只打开一次文件。当您需要截断它时,请在其上调用truncate
方法。
if word not in line:
newfile.truncate()
如果您在截断后可能会对文件写更多内容,则可能还应seek
返回起始位置(例如newfile.seek(0)
)。如果您在截断文件后将完成该文件,则不需要该步骤。
答案 1 :(得分:1)
应该是这样的
temp_lines = []
last_line_was_edit = False
found_keyword = False
keyword = "Austin-Backup"
with open('test.txt') as oldfile, open('script.txt', 'w') as newfile:
for line in oldfile:
if last_line_was_edit and temp_lines:
if found_keyword:
newfile.writelines(temp_lines)
temp_lines = []
if line.startswith("edit"):
last_line_was_edit = True
else:
if keyword in line:
found_keyword = True
temp_lines.append(line)
请注意,您不应该两次打开文件。只需使用一个临时变量,只写下必须写的内容