【307】◀▶ Python 相关功能实现
目录:
使用 urllib 模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。
语法如下所示:
urlretrieve (url, filename=None, reporthook=None, data=None) 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。) 参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。 参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。
以下代码实现批量下载图片到指定的文件夹:
import os import urllib # 设置工作空间 os.chdir(r"D:\tmp") for i in range(170, 170): url = "http://www.100875.com.cn:1314/data/upload/sx7x2012/7x" + str(i+1).zfill(3) + ".jpg" urllib.urlretrieve(url, str(i+1).zfill(3) + ".jpg")
参考:Python 简单爬虫程序 以及 urllib.urlretrieve()方法 改变文件存放文件位置
在进行 ArcPy 代码处理的时候,如果 shp 文件的文件名中存在点“.”会报错,例如这样的文件名 union2018.04.11.shp,因此需要将里面的点去掉,或者替换为下划线“_”,如下的代码预设条件为,根目录下有 N 个文件夹,每一个文件夹中有 N 个 shp 文件,代码如下:
# 文件夹套文件夹的形式,此为根目录 rootdir = r"D:\01-Working\2018\20180411-HAD_FREQ\2017shp" # 获取子文件夹 folders = os.listdir(rootdir) # 遍历子文件夹里面的文件重命名 for folder in folders: fs = os.listdir(os.path.join(rootdir, folder)) for f in fs: file_ext = os.path.splitext(f) # 纯文件名 f_name = file_ext[0] # 扩展名,前面带点 f_ext = file_ext[1] # 如果文件名中存在点,则将其替换为下划线重命名 if f_name.find(".") > 0: path_new = f_name.replace(".", "_") + f_ext os.rename(os.path.join(rootdir, folder, f), os.path.join(rootdir, folder, path_new))
说明:通过 os.path.splitext() 函数可以将文件名和扩展名分开,这样在处理文件名的点的问题就不会受到扩展名的影响了。
正常情况下 Python 脚本执行后会消失,为了让脚本暂停而不是立即消失,可以在脚本末尾添加如下代码:
import os os.system("pause")
A