[英]Don't understand some lines of code that reads a file
這是讀取文件“jason.txt”並計算每個圖像的每個“類別”有多少的代碼。
我使用的文件數據可以在以下位置找到: http://www.practicepython.org/assets/Training_01.txt
counter_dict = {}
with open('jason.txt') as f:
line = f.readline()
while line:
line = line[3:-26]
if line in counter_dict:
counter_dict[line] += 1
else:
counter_dict[line] = 1
line = f.readline()
print(counter_dict)
有人可以解釋這條線在做什么:
line = line[3:-26]
為什么我們要兩次使用這條線:
line = f.readline()
line = line[3:-26],獲取從第 4 個字符到末尾的行內容,不包括最后 26 個字符。 它用於從 jason.txt 文件的文件路徑中提取類別名稱。
第一行 = f.readline(),需要在進入 while 循環之前初始化行。 循環中需要第二個來獲取和處理文件的下一行,用於每次迭代。
這是您文件中的示例行:
/a/abbey/sun_aqswjsnjlrfzzhiz.jpg
這被line = f.readline()
讀入line
變量,因此 while 循環不會因為空的 line 變量而立即退出。
然后在while循環中line = line[3:-26]
裁剪掉前3個字符和后26個字符(因為它是文件的一行,你需要在每行的末尾計算返回字符,因此26 而不是 25) 所以對於這一行,你的 line 變量將包含: abbey
。
while 循環中的 if 語句:
if line in counter_dict:
counter_dict[line] += 1
else:
counter_dict[line] = 1
如果在counter_dict
中找到此時保存abbey
的line
變量的值,則在字典中將其值增加 1。 如果未找到,則將其添加到字典中,並將值設置為 1。
while 循環所做的最后一件事是使用line = f.readline()
從文件中獲取下一行。
它將繼續這樣做,直到沒有下一行,然后打印生成的 json 文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.