zoukankan      html  css  js  c++  java
  • 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+'
    ')
                except Exception as e:
                    print(e)
                    offset=len(line.encode('utf8'))+1
                    f.seek(-offset,1)
                line=f.readline().strip()
  • 相关阅读:
    scrapy框架(一)
    selenium爬取京东商品信息
    自动化测试工具selenium的使用
    xpath选择器的使用
    爬取网页数据实例
    爬虫实操
    爬虫之`beautifulsoup4`模块
    DNS学习笔记
    MongoDB集群部署
    MongoDB单机部署
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/14050368.html
Copyright © 2011-2022 走看看