大家好,我是公衆号3分鐘學堂的郭立員~
前言
按理說這個問題很好解決,讀一行和删一行都有對應的命令,讀一行用file.readline,删一行用file.deleteline,那為啥還總有人問這個問題?
我覺得有這麼幾種可能性:
一、剛剛接觸按鍵精靈的新手
對命令不熟,不知道用什麼命令,這種情況我們不在這期文章的讨論範圍。
二、系統兼容性問題
舉個例子,我用腳本往文本裡面寫入4行内容,代碼如下:
Dim path="/sdcard/pictures/xx.txt"
file.Write (path)
Dim arr={1,2,3,4}
file.WriteLines(path,arr)
在不同電腦系統上顯示的結果是不一樣的,在win10系統中文本是分行的,而在win7系統中,文本是隻有1行。效果如圖所示:
造成這個原因是因為文本換行機制:
在win7系統中文本換行需要在文字行結尾處加上 \r\n
在win10系統中文本換行隻需要在文字行結尾處加上 \n
\r 回車符
\n 換行符
我們用腳本寫入文本内容使用的是file.WriteLines 命令,打開file插件,看一下這個命令的源碼:
在源碼中可以看到把數組寫入命令,就是循環寫入每一行内容,并且在行結尾出加上\n實現換行。
因為缺少\r導緻在win7系統中,看不到換行效果,但是僅僅是在文本中看不到換行效果,并不代表沒有。
當使用其他文本工具打開文本時,還是會看到換行效果的。
①用notepad打開
②用模拟器打開
那上面說的這個兼容性對我們“讀一行删一行”的操作有什麼影響呢?
假設你使用的是win7系統
你先有個xx.txt的文本,文本内容是
然後執行“讀一行删一行”的操作
Dim txt=file.readline("/sdcard/pictures/xx.txt",1)
TracePrint txt
file.DeleteLine "/sdcard/pictures/xx.txt", 1
執行完操作後,文本内容變成這樣了,看起來像一行,僅僅是看着像一行
這時有的人就懵逼了,我就删除了第1行,為啥所有行都合并到一起了。
那問題出在哪?
出在file.deleteline命令,也就是删除指定行的内容:
可能你會有個誤區,删除文本行就是打開文本以後找到指定行,把整行内容删掉,然後再去掉空行,整個删除操作是在文本内進行的。
其實并不是,删除操作是把所有内容先讀取出來,然後删掉不要的内容,在寫回文本。
在這個過程中,有一個寫入文本的操作,也就是用到上面說的file.WriteLines 命令,所以就存在win7和win10兼容性的問題,導緻看不到換行效果。
插件中file.deleteline命令的源碼中看到調用writelines函數
那怎麼解決這個問題?
①不去管它,因為隻有在win7文本有問題,在其他編輯器或者在win10上沒問題,也不影響腳本讀取。
②實在看着費勁,也可以改成
改一下file插件中的writelines命令
也是小改動,就是在\n前面加上一個\r,保存一下插件就可以了。
注:插件位置在
至于你選擇哪個方法看自己喜好。
三、多模拟器讀取文本會出現讀不到的情況。
有時候讀一行删一行的目的是為了多個模拟器不重複讀一行内容,但是這種方法是不行的,很容易出現同時讀到同一行内容,這時會導緻讀不到内容
推薦方法是“排隊讀取”,具體方法看我另一篇文章教程。
【腳本講解】多開模拟器讀取同一文本不重複
=正文完=
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!