本帖最后由 wznjsy 于 2012-9-20 17:32 编辑
需要删除文件的最后一行,但是看库文件貌似没有找到这个功能,搜索了下,貌似也没有这样的帖子。开始动脑子。。。
在想:能不能这么操作?逐行读取文件后,把最后1行给去掉,再把其他行给保存到原来的位置?
逐行读取的代码是:
for line in io.lines(path) {
io.print(line);
}
去除最后一个 貌似用Table 好搞一点,于是想起了用pop ,这样可以把最后一行给POP 出来。这样剩下的就是我需要的内容。
但是因为这个时候我得到的是数组,保存的话,还得一行一个去保存,这样的话 用for 循环去遍历好一点。换行用'\r\n' 就可以了。
现在又有一个问题了,如何保存到原来的文件中去?得先清空,然后再1行1行的追加。清空其实很简单,给他保存一个空的字符串就可以了。比如。string.save(path, "")
下面把剩下的这些数据挨个追加进去就OK了。
下面把代码贴出来。(要正确运行这个代码需要在D盘的更目录下面有一个title.txt 文件,文件里面最好3行以上的内容。)
import fsys;
io.open()
path = "d:\\title.txt"
tabTitle={};
for line in io.lines(path) {
table.push(tabTitle,line);
}
io.print("原文件内容");
for(k,v in tabTitle){
io.print(v);
}
lastone = table.pop(tabTitle);//弹出最后一行
io.print("最后一行是",lastone,"好吧,一会把你删掉");
string.save(path, "") //清空原来的文件
io.print("新的文件内容");
for(k,v in tabTitle){
str = v + '\r\n';
string.save(path, str ,true)//追加字符串到这个文件
io.print(v);
}
execute("pause") //按任意键继续
io.close();//关闭控制台
现在想想其实这个功能也没有什么太复杂的地方。就是将几个自己知道的知识进行组合,也能解决。这个方法也许不是最好的,欢迎大家批评指正。
|