【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
浙公网安备 33010602011771号