把文件夹dir1中后缀为'.jpg'的文件拷贝到文件夹dir2中:

import glob
import shutil
import sys 
if __name__ == '__main__':
 file_names = glob.glob('dir1/*.jpg')
 for file_name in file_names:
  try:
   shutil.copy(file_name, 'dir2')
  except:
   print("Failed to copy file: ", sys.exc_info())

补充:Python之通配符--提取文件中的内容并输出

前言:

我的学习进度其实没有那么快的,因为现在是网络工程师实习,只有晚上一点时间和周末有空,所以周一到周天的学习进度很慢,今天之所以突然跳到通配符是因为工作需要,大体讲一下我的工作需求:网络工程师就是写脚本然后导入不同的网络设备中,我现在有一份现网正在使用的设备的命令,需要更换新的设备,但新设备跟旧设备(现网中正在使用的)不是同一个厂家的,导致他们的命令不兼容(知识,大体内容是一样的),所以我需要把旧设备中的Mac地址啦,ip啦,网关等全部提取出来并插入到新的命令模式中,现在开始完成上述需求(简单的,只包含一点关于IP-MAC绑定的,用于DHCP自动分配ip地址时可以根据PC的MAC和VLAN来获取特定的IP)

效果图:

旧设备中命令格式:

变动的大体形式:

原:

ip source binding 0000-0000-0014 vlan 20 1.1.1.14 interface FastEthernet 0/14

新:

int g1/0/14
ip source binding ip-address 1.1.1.14 mac-address 0000-0000-0014 vlan 20

源代码:

import re
f = open('C:/Users/Shinelon/Desktop/ceshi.txt','r',encoding = 'utf-8')
x = (f.readlines())
for i in range(0,51):
s = x[i]
mac = re.findall('.{4}-.{4}-.{4}', s)
ip = re.findall('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', s)
inter = re.findall('0/\d{1,2}', s)
vlan = re.findall('vlan \d\d', s)
inter = ''.join(inter)
mac = ''.join(mac)
vlan = ''.join(vlan)
ip = ''.join(ip)
print("int g1/%s" % inter)
print("ip source binding ip-address %s mac-address %s %s" % (ip, mac, vlan))

f.close()

解析

正则表达式,学网络的时候接触过,但比较浅,今天重新看了下各命令的含义,第一次写,有些可以精简的地方我都没精简,一个是太晚了没时间,另一个就是能力有限,多多包涵。

整体思路

从原文件中逐行取出,试了好几次,才弄好格式问题,必须txt,用word文档会报编码错误,pycharm默认的好像是uef-8,而word是gbk,导致不兼容,总之还得改软件的编码方式,我嫌太麻烦,同一使用txt,也挺方便的。

然后就是读取文件的格式,应该是open函数固定的,‘r'是指的只读,不往文档中写(f.close()是我写博客的时候刚加的,不知道对不对,就是关闭流,不关问题不大,报错就网上查查命令或删除)。

读取是readlines()(readline()没有s只读一行)读到文件尾,返回值是列表,且一次性读出(可以用循环,那样就要用readline()一行一行的读)。

然后通过创建“s”字符串和for循环来一个一个的处理文件列表的内容,之所以要用字符串是因为通配符只支持处理字符串!且通配符处理后的返回值为列表。

至于通配符规则,有点长也有点多,网上不少,可自行百度,我这里只提供思路。通配符匹配想要的数据(我这里提取了ip地址,mac地址,所属vlan,在哪个接口下),然后分别用不同的列表承接这些值用于方便打印。

需要注意的是,这里的列表不需要加索引,加了会报错,我也是搞了半天,因为这个列表是在for循环中的,每一次循环都相当于重新赋值创建,所以不存在说列表会增长,直接打印全部即可(可在循环外建列表,在循环内通过append方法增加列表长度)。

另一个需要注意的是,因为是列表,打印出来会带着“['']”,就很烦,不是我想要的命令那种一体化的,所以在这里我又查找到了join方法,属于列表常用方法,就是新建字符串(我特意看了下类型,下面有图说明),让字符串赋值:列表,并改变列表的分隔符(默认是单引号加逗号)为join前面单引号内的参数(可以为空None)。

我去,突然想到我前面最后一句打印的其实不是列表而是字符串,这样的话直接打印完整的一串毫无问题,前面的疑问解决,还是多总结的好啊,能发现不足,完善自己!

Join方法:

(请忽略那几个报错,是因为最后的括号是中文输入法的括号不识别报的错)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持程序员的世界。如有错误或未考虑完全的地方,望不吝赐教。

Python:通配符查找、拷贝文件的操作的更多相关文章

  1. python自动统计zabbix系统监控覆盖率

    脚本主要功能: 1)通过zabbix api接口采集所有监控主机ip地址; 2)通过cmdb系统(蓝鲸)接口采集所有生产主机IP地址、主机名、操作系统、电源状态; 3)以上2步返回数据对比,找出未监控主机ip地址,生......

  2. Python基础(中篇)

    数据类型的常用方法,条件语句,循环语句。本篇文章主要内容:数据类型的常用方法,条件语句,循环语句。在开始正篇之前我们先来看看上一篇留下的题目。题目:定义一个字典a,有两个键值对:一个键值对key是可乐,value是18;另一个键值对key是python,value是列表形式的1,2,3,4,5。答案......

  3. python OpenCV学习笔记

    图像翻转使用Python的一个包,imutils。使用下面的指令可以安装。pip install imutilsimutils包的Github地址:https://github.com/jrosebr1/imutilsCSDN镜像:https://codechina.csdn.net/mirrors......

  4. python如何实现单向链表及单向链表的反转

    链表的定义链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息单向链表的实现class ListNode:def __init__(self, val):self.val = valself.next = None要实现单向链表只需要把几个节点关联起来就可以了,把一......

  5. Pandas 连接合并函数merge()详解

    一、merge函数用途pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操作,得到一个新的数据集。二、merge()函数的具体参数用法:DataFrame1.merge(DataFrame2, how=‘inner', on=None, le......

  6. python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法

    今天说的则是使用另外一种扩展库 lxml 来对网页完成解析。同样的,lxml 库能完成对 html、xml 格式的文件解析,并且能够用来解析大型的文档、解析速度也是相对比较快的。要掌握 lxml 的使用,就需要掌握掌握 xpath 的使用方法,因为 lxml 扩展库就是基于 xpath 的,所以这一......

  7. Python 字符串去除空格的五种方法

    在处理Python代码字符串的时候,我们常会遇到要去除空格的情况,所以就总结了多种方法供大家参考。1、strip()方法去除字符串开头或者结尾的空格str = " Hello world "str.strip()输出:"Hello world"2、lstrip......

  8. python实现web邮箱扫描的示例(附源码)

    信息收集是进行渗透测试的关键部分,掌握大量的信息对于攻击者来说是一件非常重要的事情,比如,我们知道一个服务器的版本信息,我们就可以利用该服务器框架的相关漏洞对该服务器进行测试。那么如果我们掌握了该服务器的管理员的邮箱地址,我们就可以展开一个钓鱼攻击。所以,对web站点进行邮箱扫描,是进行钓鱼攻击的一......

  9. python实现自动化群控的步骤

    1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和 Hui 产绑定在一起!事实上,群控在自动化测试中也被广泛使用!接下来的几篇文章,我将带大家聊聊企业级自动化中,群控正确的使用姿势!本篇先从基础篇开始,聊聊使用「 Python + adb ......

  10. python使用numpy中的size()函数实例用法详解

    在python中,提到如何计算多维数组和矩阵,那一定会想到numpy。numpy定义了矩阵和数组,为它们提供了相关的运算。size中文解释为大家、尺寸的意思,如果想要统计矩阵元素个数,使用size()函数就可以解决。1、Numpy size()函数主要是用来统计矩阵元素个数,或矩阵某一维上的元素个数......

随机推荐

  1. Linux磁盘空间释放问题整理

    IDC里的一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(80G),于是在跟有关同事确认后rm -f果断删除该文件。但是发现删除该文件后,/分区的磁盘空间压根没有释放出来,使用率还是100%!这是为什么呢??[root@linux-node1 ~]# df -hFilesys......

  2. 整理CocosCreator常用知识点

    一、场景加载cc.director.loadScene(‘场景名称');//场景跳转cc.director.preloadScene(‘场景名称');//预加载场景cc.director.getScene();//获取当前场景二、查找节点1,节点查找node = cc.find(“Canvas/bg......

  3. input标签checkbox选中触发事件的方法

    1.方法一function checkboxOnclick(checkbox){ if ( checkbox.checked == true){ //Action for checked }else{ //Action for not checked }} 2.方法二$('#allSelect'......

  4. Tomcat正常访问localhost报404问题解决

    今天在配置Tomcat访问项目主页的时候发现报404错误,开始以为是我的项目xml配置有问题,结果调了半天也不对,后来发现居然访问localhost:8080也报404,这个问题就严重了,于是开始了漫长的调试,终于成功!记录下最终解决方案,以供未来再遇到相似问题,有迹可查。 ......

  5. php结合GD库实现中文验证码的简单方法

    前言上一次写了一个常见的验证码,现在玩一下中文的验证码,顺便升级一下写的代码流程基本差不多先看GD库开启了没生成中文5位验证码开始画图画干扰素生成图形完事生成中文验证码?1234567891011//小小心机$hanzi= "如果觉得写得还可以的话互相关注报团取暖交流经验来自合肥的小码农巴......

  6. c#里面的AES加密解密

    C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现更多1AESJavascriptJavaC#PythonPHPc#里面的AES加密解密在visual studio中写的c#代码using System;using System.Collections.Ge......

  7. css3实现的天气图标动画效果

    实现效果实现代码html<div class="wrapper"><div class="sun"></div><div class="cloud"><div class="c......

  8. Java RMI 实现一个简单的GFS(谷歌文件系统)——介绍篇

    本系列主要是使用Java RMI 实现一个简单的GFS(谷歌文件系统,google file system)。首先进行整体介绍,然后对背景进行描述以及对系统进行设计,同时实现系统,提供演示视频和源代码,望多多支持!本系列主要是使用Java RMI实现一个简单的GFS(谷歌文件系统,google fi......

  9. c#发送请求访问外部接口的实例

    我就废话不多说了,大家还是直接看代码吧~string url = "https://cloud.soei.com.cn/smsapi/sms/verifycode";HttpClient httpClient = new HttpClient();httpClient.BaseA......

  10. C#使用base64对字符串进行编码和解码

    需要引入命名空间:using System;using System.Text;解码:public static string UnBase64String(string value){if (value == null || value == ""){return "......