一种Python实现的带缓冲的远程文件本地加载方法
郝伟 2022/10/30 10:19:01 星期天
一些简单文件的数据共享存在以下问题:
为解决此问题,本文提出了一种利用云主机Web服务进行数据同步及本地缓冲的方法。
http://121.199.10.158/data.csv/ 和 : 都替换成 .后的字符串作为文件名。本方法定义了buffer_url_load(url, clear=False, buffer_dir='c:/data/buffered_files/a') 函数用于远程数据加载,具体作用如下:
url 数据链接clear 是否清除本地缓冲数据buffer_dir 存放缓冲数据的文件夹from urllib.request import urlopen url = 'http://121.199.10.158:8107/c5p8d4he6gjkxm0oq1zrbslt2v37wify9aunx/downloads/pycode/test.py' url = 'http://121.199.10.158:8107/c5p8d4he6gjkxm0oq1zrbslt2v37wify9aunx/downloads/csv/sample_d41d8cd98f00b204e9800998ecf8427e_s4s.csv' def buffer_url_load(url, clear=False, buffer_dir='c:/data/buffered_files/a'): if not os.path.exists(buffer_dir): os.makedirs(buffer_dir) print(buffer_dir + ' is created.') #else: # 清空所有文件 # shutil.rmtree(filepath,ignore_errors=True) buffer_file = f'{buffer_dir}/{url.replace("/", "_").replace(":", "_")}' # 本地加载 if not clear and os.path.exists(buffer_file): print('load locally') with open(buffer_file, 'r', encoding='utf-8') as fp: data = fp.read() return data # 远程加载 with urlopen(url) as up: data = up.read() with open(buffer_file, 'wb') as fp: fp.write(data) print('load remotely') return bytes.decode(data, 'utf-8') text = buffer_url_load(url) print(text)