定義一個A類,然后實例化一個A對象,通過setattr函數(shù)來給當(dāng)前類添加一個變量,值是test函數(shù)。調(diào)用haha函數(shù),就相當(dāng)于調(diào)用了test函數(shù)。 例2,定義一個模塊,通過另一個模塊函數(shù)調(diào)用函數(shù)來增加變量,值是test2函數(shù)。調(diào)用haha函數(shù),就相當(dāng)于調(diào)用了test2函數(shù)。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:國際域名空間、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、裕華網(wǎng)站維護(hù)、網(wǎng)站推廣。
原理
python系統(tǒng)會維護(hù)一個變量的字典,可以通過locals()或者globals()獲取到該字典。由于字典是可變對象,那么,就可以動態(tài)的增加變量。由于函數(shù)也是一個對象,那么就可以將變量指向函數(shù)。這樣就可以達(dá)到動態(tài)修改函數(shù)名的目的了。
1、cmd007 作為自定義命令名稱
2、cmd007 hello --name=Lily 作為自定義功能1的名稱hello打招呼,輸出:Hi, Lily
3、cmd007 eat --food=fish 作為自定義功能2的名稱food吃東西,輸出:I like to eat fish
(一)目錄結(jié)構(gòu)如下:
cmd007 # 文件夾必須和自定義命令同名
│ __init__.py
│ __main__.py
(二)實現(xiàn)自定義命令和功能1
在__main__.py中
View Code
來到cmd007的上級目錄下,調(diào)出命令行客戶端,執(zhí)行命名:
python cmd007
python cmd007 -V
python cmd007 hello --name=Lily --count=3
python cmd007 hello -n Lilei -c 2
分別輸出:
提示:如果將這個python包cmd007打包發(fā)布,然后安裝到python中去,那么每行命令就不用輸入python關(guān)鍵字了。
(三)實現(xiàn)自定義命令、功能1、功能2
在__main__.py中增加代碼
# 自定義功能2:eat
@cli.command(name="eat")
@click.option('-f', '--food', help="please input your like food")
@click.option('-a', '--and-you', help="ask echo other", default=False)
def hello_command(food, and_you):
print("I like to eat {0}".format(food))
if and_you in ['t', 'T', 'true', 'True', True, 1, "1"]:
print("And what is your favorite food ?")
完整版:
View Code
執(zhí)行
python cmd007 eat -f fish --and-you=1
輸出
延伸:
@click.option()中的參數(shù)詳解:
每個參數(shù)解釋如下:
name or flags - 選項字符串的名字或者列表,例如 foo 或者 -f, --foo。
action - 命令行遇到參數(shù)時的動作,默認(rèn)值是 store。
store_const,表示賦值為const;
append,將遇到的值存儲成列表,也就是如果參數(shù)重復(fù)則會保存多個值;
append_const,將參數(shù)規(guī)范中定義的一個值保存到一個列表;
count,存儲遇到的次數(shù);此外,也可以繼承 argparse.Action 自定義參數(shù)解析;
nargs - 應(yīng)該讀取的命令行參數(shù)個數(shù),可以是具體的數(shù)字,或者是?號,當(dāng)不指定值時對于 Positional argument 使用 default,對于 Optional argument 使用 const;或者是 * 號,表示 0 或多個參數(shù);或者是 + 號表示 1 或多個參數(shù)。
const - action 和 nargs 所需要的常量值。
default - 不指定參數(shù)時的默認(rèn)值。
type - 命令行參數(shù)應(yīng)該被轉(zhuǎn)換成的類型。
choices - 參數(shù)可允許的值的一個容器。
required - 可選參數(shù)是否可以省略 (僅針對可選參數(shù))。
help - 參數(shù)的幫助信息,當(dāng)指定為 argparse.SUPPRESS 時表示不顯示該參數(shù)的幫助信息.
metavar - 在 usage 說明中的參數(shù)名稱,對于必選參數(shù)默認(rèn)就是參數(shù)名稱,對于可選參數(shù)默認(rèn)是全大寫的參數(shù)名稱.
dest - 解析后的參數(shù)名稱,默認(rèn)情況下,對于可選參數(shù)選取最長的名稱,中劃線轉(zhuǎn)換為下劃線.
本文接上一篇 使用python對文件名進(jìn)行批量修改2020-04-24 待續(xù)內(nèi)容,主要介紹如何刪除文件名前綴及后綴,方法為基于lstrip()和partition()函數(shù)的實現(xiàn)。
(1)刪除文件名前綴; 如 “ ”。
(2)刪除指定字符之后的內(nèi)容;如 ”_張三“ 、 “_李四” 、 ”_Mike“ 等。
(1)刪除前綴函數(shù) str.lstrip()
將字符串s中的’aabb_‘刪除,運行結(jié)果如圖:
(2)刪除指定字符之后內(nèi)容,使用函數(shù) str.partition()
將字符串s中的’_aabb‘刪除,運行結(jié)果如圖:
Python 3.6.4
所用模塊:import os
(一)打開文件夾,獲得舊文件名
path=r"D:\exp\resultdata"? ?//文件夾途徑
for (root, dirs, files) in os.walk(path):
os.walk(path)//遍歷D:\exp\resultdata下文件
(二)獲得新文件名(如何打開一個文件)
一般新文件名都保存在一個文件中
new_names_files=open('文件名.txt','r')
content=open('文件名.txt','r')(此時content是一個含有所有new name 的列表)
注意:對新名字(字符串)會有一些操作
(1)對文件名(字符)的分割
用split()進(jìn)行分割
a=''wer.werrew/"
(2)list 添加新的元素、
用append()進(jìn)行添加
(3)字典添加新的元素
用update()進(jìn)行添加
實例:
(三)重命名
利用os.rename()函數(shù)
實例:舊名字與新名字的數(shù)字相對
file=['1.max','2.max'……]//舊名字
for file in files:
? ? oldname = os.path.join(root,file)
? ? namesp=file.split('.')
? ? new_namesp=d[int(namesp[0])]//數(shù)字相對
? ? newname = os.path.join(root,new_namesp)
? ? os.rename(oldname,newname)
import os
import re
for file in os.listdir(filepath):
if os.isfile(os.path.join(filepath,file)):
newfile = re.sub(name1,name2,file)
os.rename(os.path.join(filepath,file),os.path.join(filepath,newfile))
應(yīng)該能跑吧。。 沒試過
引入os模塊(python中操作文件的模塊)。
2
定義修改名稱的函數(shù)rename。
在rename函數(shù)中定義一個儲存路徑的變量path,并將要修改文件名的文件夾的路徑賦值給該變量。
3
繼續(xù)向函數(shù)中添加功能代碼
4
最后調(diào)用這個rename函數(shù)這個腳本就寫完了。執(zhí)行這個文件,就會將文件夾下所有的文件改成 這里是你要改的文件名.后綴名 這樣的格式,顯然我們一般情況下不是需要這樣的效果的。下面我列出了一些常用的改文件名的方法。
名稱欄目:python改名字函數(shù),Python函數(shù)名稱
網(wǎng)頁URL:http://chinadenli.net/article38/hesdsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、微信公眾號、App設(shè)計、定制開發(fā)、網(wǎng)站改版、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)