argparsePython中的argparse模块主要用于命令行参数解析,可以帮助用户轻松编写命令行界面。我们先来看一个例子。importargparse#解析参数parser=argparse.ArgumentParser()parser.add_argument("name")args=parser.parse_args()#打印结果print(f'Hello{args.name}!')然后我们运行下面的在终端中代码:pythonpython_package.py君信会有如下结果。俊鑫您好!如果我们忘记带参数,会自动出现如下提示:usage:python_package.py[-h]namepython_package.py:error:thefollowingargumentsarerequired:name当然我们也可以通过下面的命令行来查看需要添加什么参数。pythonpython_package.py-h结果如下:usage:python_package.py[-h]namepositionalarguments:nameoptionalarguments:-h,--helpshowthishelpmessageandexit当然我们不知道名字参数指的是什么,因为我们可以改变我们写的程序。importargparse#解析参数parser=argparse.ArgumentParser()parser.add_argument("name",help="Enteryourname")args=parser.parse_args()print(f'Hello{args.name}!')让我们再次运行以下命令行:pythonpython_package.py-houtputusage:python_package.py[-h]namepositionalarguments:nameEnteryournameoptionalarguments:-h,--helpshowthishelpmessageandexit有时我们想要多个参数是输入,我们可以这样,importargparse#Parseparameterparser=argparse.ArgumentParser()parser.add_argument("name",help="Enteryourname")parser.add_argument("age",help='Enteryourage',type=int)args=parser.parse_args()born_year=2022-args.ageprint(f'你好{args.name}!你出生于{born_year}。')我们通过终端程序输入以下内容。pythonpython_package.py君信24output君信你好!你是1998年出生的,shutilshutil模块提供了大量的高级文件操作。特别是对于文件的复制、删除、移动、压缩、解压等操作,我们先来看一个例子:importshutilprint(shutil.which("python"))outputpath...上面返回的是Python可以执行的路径程序,移动文件的代码是shutil.move(src,dst)。shutil.move("sourcepath","targetpath")另外,我们主要会用到:shutil.copyfile(src,dst):复制文件shutil.copytree(olddir,newdir,True/False):复制整个文件夹directoryshutil.rmtree(src):递归删除整个目录和目录文件夹下的所有内容globglob模块主要用于查找满足特定规则的目录和文件,并将找到的结果返回到一个列表中。它也可以与常规通配符一起使用,例如:defchoose_numbered_files(root="."):returnglob.glob(f"{root}/[0-9].*")choose_numbered_files("images")returnsIt是images路径下带编号的文件,结果如下:['images\\1.gif','images\\1.png','images\\2.gif','images\\2.png','images\\3.png',]上面使用的glob.glob()返回的是所有满足匹配条件的文件的路径,而glob.iglob()返回的是一个可迭代对象,需要遍历到获取每个元素后获取符合匹配条件的所有文件的路径。pprintpprint模块提供了“美化打印”任意Python数据结构的功能,方便用户阅读。如果使用普通print打印,则如下:nested=[list("abcs"),list("sdff"),[1,45,4,6,7,8],list(range(12))]print(嵌套)输出[['a','b','c','s'],['s','d','f','f'],[1,45,4,6,7,8],[0,1,2,3,4,5,6,7,8,9,10,11]]并使用pprint模块进行打印,如下:frompprintimportpprintpprint(嵌套)输出[['a','b','c','s'],['s','d','f','f'],[1,45,4,6,7,8],[0,1,2,3,4,5,6,7,8,9,10,11]]我们也可以格式化输出键值对数据,代码如下:importjsonimportpprintfromurllib.requestimporturlopenwithurlopen('https://pypi.org/pypi/sampleproject/json')asresp:project_info=json.load(resp)['info']pprint.pprint(project_info)output{'作者':'A。RandomDeveloper','author_email':'author@example.com','bugtrack_url':None,'classifiers':[.........],'description':[....],'description_content_type':'text/markdown','docs_url':None,'download_url':'','downloads':{.........},'home_page':'https://github.com/pypa/样本project','keywords':'samplesetuptoolsdevelopment','license':'','maintainer':'','maintainer_email':'','name':'sampleproject','package_url':'https://pypi.org/project/sampleproject/','platform':'','project_url':'https://pypi.org/project/sampleproject/','project_urls':.......,'requires_dist':[...],'requires_python':'>=3.5,<4','summary':'一个示例Python项目','version':'2.0.0','yanked':False,'yanked_reason':None}statisticsPython中的statistics模块提供了更完善的数据统计操作。比如中位数的计算,提供了两个方法,median_low()和median_high()。分别计算数据的低中位数(偶数样本取中间两个数中较小的那个),代码如下:statistics.median_low([1,3,5,7])output3和高中位数(偶数采样时取中间两个数中较大的一个),代码如下:statistics.median_high([1,3,5,7])output5另外,如均值、众数、标准差、方差等.可以计算,例如:x1=statistics.mode([1,1,2,3,4,3,3,3,3])print(x1)x2=statistics.mode(["a","b","c","d","d","a","a",])print(x2)output3acalendarPython中的日历模块提供了一系列对日期的操作方法,可以生成日历。代码如下:importcalendarprint(calendar.calendar(2022))output2022一月二月三月MoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu1212345612345634567897891011121378910111213101112131415161616161617181920141516171819201718192021222323212223232323262721222122222323232324252627242724252627282930282829303131AprilMayJuneMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSu12311234545678910234567867891011121112131415161791011121314151314151617181918192021222324161718192212202021252625262728293023242526272829272829303031...当然我们也可以打印出某月的日历,代码如下:importcalendarprint(calendar.month(2022,3))outputMarch2022MoTuWeThFrSaSu12345678910111213141516171819202122232425262728293031calendar.isleap(year)如果是闰年返回True,否则返回False,例如:importcalendarprint(calendar.isleap(2022))outputFalse
