python實現讀取文件的斷點續傳


python讀取文件有兩個重要的方法f.tell()和f.seek()

通過這兩個方法就可以實現文件的斷點續傳,tell可以實時返回讀取文件的偏移量,seek可以直接跳轉到這個偏移量

只要在異常中斷之前將文件的偏移量記錄下來,之后繼續執行的時候就可以從這個偏移量開始讀起,

備注:從中間開始移動指針在讀文件的時候必須以二進制的方式讀

 

import json
from time import sleep

import requests

url = 'http://api.map.baidu.com/geocoder/v2/?address={addr_name}&output=json&ak=6HDoKGOxh5Yo5RRRNqAk8R9S6mcY9REY'


def get_jw(addr_name):
    result = requests.get(url.format(addr_name=addr_name))
    result_str = str(result.content, encoding="utf-8")
    rj = json.loads(result_str)
    lng = rj['result']['location']['lng']
    lat = rj['result']['location']['lat']
    return ','.join([addr_name, str(lng), str(lat)])


if __name__ == '__main__':
    file_name = '/opt/test/wangbin/community_copy.txt'
    target_file='/opt/test/wangbin/target2.txt'
    with open(file_name, 'rb') as f,open(target_file,'a') as f2:
        line = f.readline().strip()
        while line:
            line=str(line,encoding='utf8')
            id,community_name=line.split(',')
            addr_name = '杭州市' + community_name
            try:
                target=get_jw(addr_name)
                print(target)
                f2.write(id+','+target+'\n')
            except Exception as e:
                print(e)
                offset=len(line.encode('utf8'))+1
                f.seek(-offset,1)
            line=f.readline().strip()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM