99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀「Python自動(dòng)化辦公」分享幾個(gè)好用到爆的模塊,建議收藏
「Python自動(dòng)化辦公」分享幾個(gè)好用到爆的模塊,建議收藏
2022-07-30
收藏

作者:俊欣

來(lái)源:關(guān)于數(shù)據(jù)分析與可視化

今天小編來(lái)給大家推薦幾個(gè)在自動(dòng)化辦公領(lǐng)域當(dāng)中非常好用的Python模塊,可以幫助大家在工作當(dāng)中及大地提高效率,避免重復(fù)機(jī)械化地操作流程。

Pathlib

涉及到文件系統(tǒng)操作的時(shí)候,相信不少人仍然在使用Python當(dāng)中的OS模塊,相比較之下,Pathlib模塊有著不少優(yōu)勢(shì),我們來(lái)看幾個(gè)簡(jiǎn)單的案例

刪除與創(chuàng)建目錄

例如我們可以來(lái)創(chuàng)建與刪除目錄,代碼如下

from pathlib import PathcurrentPath = Path.cwd()makePath = currentPath / 'pythonPractice'makePath.mkdir()

那么同樣的,刪除目錄的代碼為

currentPath = Path.cwd()delPath = currentPath / 'pythonPractice'delPath.rmdir()

獲取目錄

例如我們想要獲取當(dāng)前所在的目錄的路徑,代碼如下

currentPath = Path.cwd()print(currentPath)

以及電腦用戶所在的目錄

homePath = Path.home()print(homePath)

路徑的拼接

例如我們想要拼接出桌面的絕對(duì)路徑,代碼如下

Path(Path.home(), "Desktop")

也可以是

Path.joinpath(Path.home(), "Desktop")

目錄文件的判斷

針對(duì)指定的路徑,我們能夠來(lái)判斷是否是文件夾以及是否是一個(gè)文件,代碼如下

input_path = r"指定的路徑"if Path(input_path ).exists(): if Path(input_path ).is_file():  print("是文件哦!") elif Path(input_path ).is_dir():  print("是文件夾哦!")else: print("路徑給的不對(duì)!")

glob

Python當(dāng)中的glob模塊主要是用來(lái)查找符合特定規(guī)則的目錄和文件,并將搜索到的結(jié)果返回到一個(gè)列表當(dāng)中去。

由于該模塊支持使用正則通配符來(lái)進(jìn)行查找,因此使用起來(lái)也是特別的方便,我們來(lái)看一下簡(jiǎn)單的案例,

path1 = r".[0-9].jpg"glob.glob(path1)

outut

['.\1.jpg', '.\2.jpg', '.\3.jpg', ......]

其中經(jīng)常會(huì)用到的通配符有

  • *:匹配0個(gè)或者多個(gè)字符
  • **:匹配所有文件、目錄,子目錄和子目錄里面的文件
  • []:匹配指定范圍內(nèi)的字符,例如[1-9]匹配的是1-9以內(nèi)的字符
  • [!]:匹配不在指定范圍內(nèi)的字符

我們?cè)賮?lái)看幾個(gè)案例,代碼如下

for fname in glob.glob("./*.py"): print(fname)

上面的代碼打印出了當(dāng)前目錄下的所有py后綴的文件,再來(lái)看一下案例

for fname in glob.glob("./file[!0-9].py"): print(fname)

上面代碼則是打印出了以filename開頭的非數(shù)字符號(hào)的py文件。

PDF轉(zhuǎn)成Word文檔

最后我們來(lái)講講如何實(shí)現(xiàn)將PDF文檔轉(zhuǎn)換成Word格式的文檔,用到的模塊是pdf2docx,我們先用pip命令來(lái)將該模塊安裝一下

pip install pdf2docx

我們來(lái)實(shí)踐一下,代碼如下

from pdf2docx import Convertercv = Converter(r"pdf文檔的具體路徑")cv.convert("test.docx", start=0,end=None)cv.close()

如果是頁(yè)面元素比較簡(jiǎn)單的文檔,pdf2docx模塊處理一下是完全夠用了,但是有些時(shí)候PDF文檔當(dāng)中個(gè)別頁(yè)面非常的花里胡哨,轉(zhuǎn)換成Word格式的文檔之后則會(huì)顯得有點(diǎn)凌亂。

最后我們還能夠針對(duì)指定的頁(yè)數(shù)進(jìn)行轉(zhuǎn)換,例如只是針對(duì)文檔當(dāng)中的奇數(shù)頁(yè)進(jìn)行操作,代碼如下

from pdf2docx import Convertercv = Converter(r"pdf文檔的具體路徑")cv.convert("test.docx", pages=[1, 3, 5, 7])cv.close()

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }