主頁 > 知識庫 > Python:通配符查找、拷貝文件的操作

Python:通配符查找、拷貝文件的操作

熱門標簽:315電話機器人廣告 蓋州市地圖標注 地圖標注的意義點 房產(chǎn)電銷外呼系統(tǒng) 地圖制圖標注位置改變是移位嗎 上海機器人外呼系統(tǒng)哪家好 地圖標注微信發(fā)送位置不顯示 浙江電銷卡外呼系統(tǒng)好用嗎 南京銷售外呼系統(tǒng)軟件

把文件夾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之通配符--提取文件中的內(nèi)容并輸出

前言:

我的學習進度其實沒有那么快的,因為現(xiàn)在是網(wǎng)絡工程師實習,只有晚上一點時間和周末有空,所以周一到周天的學習進度很慢,今天之所以突然跳到通配符是因為工作需要,大體講一下我的工作需求:網(wǎng)絡工程師就是寫腳本然后導入不同的網(wǎng)絡設備中,我現(xiàn)在有一份現(xiàn)網(wǎng)正在使用的設備的命令,需要更換新的設備,但新設備跟舊設備(現(xiàn)網(wǎng)中正在使用的)不是同一個廠家的,導致他們的命令不兼容(知識,大體內(nèi)容是一樣的),所以我需要把舊設備中的Mac地址啦,ip啦,網(wǎng)關等全部提取出來并插入到新的命令模式中,現(xiàn)在開始完成上述需求(簡單的,只包含一點關于IP-MAC綁定的,用于DHCP自動分配ip地址時可以根據(jù)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()

解析

正則表達式,學網(wǎng)絡的時候接觸過,但比較淺,今天重新看了下各命令的含義,第一次寫,有些可以精簡的地方我都沒精簡,一個是太晚了沒時間,另一個就是能力有限,多多包涵。

整體思路

從原文件中逐行取出,試了好幾次,才弄好格式問題,必須txt,用word文檔會報編碼錯誤,pycharm默認的好像是uef-8,而word是gbk,導致不兼容,總之還得改軟件的編碼方式,我嫌太麻煩,同一使用txt,也挺方便的。

然后就是讀取文件的格式,應該是open函數(shù)固定的,‘r'是指的只讀,不往文檔中寫(f.close()是我寫博客的時候剛加的,不知道對不對,就是關閉流,不關問題不大,報錯就網(wǎng)上查查命令或刪除)。

讀取是readlines()(readline()沒有s只讀一行)讀到文件尾,返回值是列表,且一次性讀出(可以用循環(huán),那樣就要用readline()一行一行的讀)。

然后通過創(chuàng)建“s”字符串和for循環(huán)來一個一個的處理文件列表的內(nèi)容,之所以要用字符串是因為通配符只支持處理字符串!且通配符處理后的返回值為列表。

至于通配符規(guī)則,有點長也有點多,網(wǎng)上不少,可自行百度,我這里只提供思路。通配符匹配想要的數(shù)據(jù)(我這里提取了ip地址,mac地址,所屬vlan,在哪個接口下),然后分別用不同的列表承接這些值用于方便打印。

需要注意的是,這里的列表不需要加索引,加了會報錯,我也是搞了半天,因為這個列表是在for循環(huán)中的,每一次循環(huán)都相當于重新賦值創(chuàng)建,所以不存在說列表會增長,直接打印全部即可(可在循環(huán)外建列表,在循環(huán)內(nèi)通過append方法增加列表長度)。

另一個需要注意的是,因為是列表,打印出來會帶著“['']”,就很煩,不是我想要的命令那種一體化的,所以在這里我又查找到了join方法,屬于列表常用方法,就是新建字符串(我特意看了下類型,下面有圖說明),讓字符串賦值:列表,并改變列表的分隔符(默認是單引號加逗號)為join前面單引號內(nèi)的參數(shù)(可以為空None)。

我去,突然想到我前面最后一句打印的其實不是列表而是字符串,這樣的話直接打印完整的一串毫無問題,前面的疑問解決,還是多總結的好啊,能發(fā)現(xiàn)不足,完善自己!

Join方法:

(請忽略那幾個報錯,是因為最后的括號是中文輸入法的括號不識別報的錯)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • python實現(xiàn)替換word中的關鍵文字(使用通配符)
  • Python 實用技巧之利用Shell通配符做字符串匹配
  • python中redis查看剩余過期時間及用正則通配符批量刪除key的方法
  • Python 通配符刪除文件的實例

標簽:日照 金華 臨汾 陽泉 雙鴨山 克拉瑪依 赤峰 貴州

巨人網(wǎng)絡通訊聲明:本文標題《Python:通配符查找、拷貝文件的操作》,本文關鍵詞  Python,通配符,查找,拷貝,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python:通配符查找、拷貝文件的操作》相關的同類信息!
  • 本頁收集關于Python:通配符查找、拷貝文件的操作的相關信息資訊供網(wǎng)民參考!
  • 推薦文章