處理文字檔案時,按行讀取檔案中1的內容,採用如下的讀取**,遇到文字中存在二進位制資料時是會保持的,需要採用二進位制的讀模式。
def
process_data
(line_data)
:print
(line_data)
with
open
("data.txt"
, mode=
"r")
as f:
for line_data in f:
process_data(line_data)
正常處理的1資料都是按照文字檔案一行一行處理的,碰到這種情況,我採用了簡單粗暴的處理方式,在上位機軟體上直接丟出二進位制資料,不處理此類資料。檔案處理之前,需要對整個檔案內容進行掃瞄,判斷是否含有二進位制的資料,根據資料的情況,只要掃瞄到資料值大於127,將此檔案判定為二進位制檔案。
size =
10240
max_value =
0with
open
("data.txt"
, mode=
"rb"
)as f:
part_data = f.read(size)
max_value =
max(part_data)
while part_data:
if max_value >
127:
print
("不支援含有二進位制資料的檔案!"
) exit(0)
else
: part_data = f.read(size)
C 判斷檔案是否文字檔案
今天fix bugs時,碰到乙個關於上傳檔案格式的問題。系統要求上傳.txt,csv格式的,這個可以根據檔案字尾名來過濾。但是如果使用者修改了字尾名來欺騙系統的話又該怎麼解決?比如a.jpg格式的改成a.txt,我現在的程式就無法識別了,雖然在後台可以彈出錯誤,但這個錯誤已經不是fs上定義的錯誤了。...
Delphi中判斷檔案是否為文字檔案的函式
在自己編寫文字檔案讀取函式的時候,你首先會遇到的第乙個問題就是 對於給定的乙個檔名,怎麼知道它所代表磁碟檔案的確是文字檔案?這裡有乙個很簡單的方法 把給定的那個檔案看作是無型別的二進位制檔案,然後順序地讀出這個檔案的每乙個位元組,如果檔案裡有乙個位元組的值等於0,那麼這個檔案就不是文字檔案 反之,如...
判斷文字檔案是否UTF 8編碼
utf 8編碼的文字文件,有的帶有bom byte order mark,位元組序標誌 即0xef,0xbb,0xbf,有的沒有。用windows的notepad編輯的文字儲存是會自動新增bom,我們常用ue編輯器在儲存utf 8編碼的時候也會自動新增bom,notepad 預設設定中儲存utf 8...