《Python语言程序设计》课件 第10-12章 图形用户界面程序设计、文件操作、Python语言与大数据挖掘_第1页
《Python语言程序设计》课件 第10-12章 图形用户界面程序设计、文件操作、Python语言与大数据挖掘_第2页
《Python语言程序设计》课件 第10-12章 图形用户界面程序设计、文件操作、Python语言与大数据挖掘_第3页
《Python语言程序设计》课件 第10-12章 图形用户界面程序设计、文件操作、Python语言与大数据挖掘_第4页
《Python语言程序设计》课件 第10-12章 图形用户界面程序设计、文件操作、Python语言与大数据挖掘_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章图形用户界面程序设计10.1GUI编程1.窗口与组件在进行GUI开发时,首先需要创建一个顶层窗口。该窗口充当容器的角色,可以存放程序所需的各种组件,例如按钮、下拉框、单选框等。顶层窗口包含了所有的组件,而组件本身也可以作为容器使用,包含其他组件。包含其他组件的组件被称为父组件,而被包含在其中的组件则被称为子组件。2.事件驱动与回调机制事件:用户使用GUI程序进行的操作,如移动鼠标、点击鼠标、按下键盘上的按键等。回调机制:当某个事件发生时,程序将调用对应的事件处理函数并做出相应的响应。事件对应的处理函数被称为回调函数。10.2Tkinter的主要组件使用Tkinter库创建一个GUI程序只需要以下步骤:(1)导入Tkinter模块。(2)创建GUI应用程序的主窗口(顶层窗口)。(3)添加完成程序功能所需要的组件。(4)编写回调函数。(5)进入主事件循环,对用户触发的事件做出响应。10.2.1标签标签(Label)是用来显示图片和文本的组件。在top主窗口中创建标签:label=Label(top,text=属性值)text属性:设置显示的文本例10-1在标签内显示两行文字fromtkinterimport*top=Tk()top.title(u"主窗口")label=Label(top,text="HelloWorld,\nfromTkinter")label.pack()top.mainloop()10.2.2框架框架(Frame)是其他组件的一个容器,通常是用来包含一组控件的主体。frame=Frame(top,属性1=表达式1,属性2=表达式2….)例10-2fromtkinterimport*top=Tk()top.title(u"主窗口")forrelief_settingin["raised","flat","groove","ridge","solid","sunken"]:frame=Frame(top,borderwidth=2,relief=relief_setting)Label(frame,text=relief_setting,width=10).pack()frame.pack(side=LEFT,padx=5,pady=5)top.mainloop()10.2.3按钮在主窗口w中创建了一个按钮控件:btn=Button(w,text="Quit",command=w.quit)Command属性:指定按钮的事件处理函数,将按钮与某个函数或方法关联起来。例10-3fromtkinterimport*top=Tk()top.title(u"主窗口")bt1=Button(top,text=u"禁用",state=DISABLED)bt2=Button(top,text=u"退出",command=top.quit)bt1.pack(side=LEFT)bt2.pack(side=LEFT)top.mainloop()10.2.4输入框输入框(Entry)是用来接收用户文本输入的组件。E1=Entry(f1,width=30)例10-4fromtkinterimport*top=Tk()top.title(u"登录")f1=Frame(top)Label(f1,text=u"用户名").pack(side=LEFT)E1=Entry(f1,width=30)E1.pack(side=LEFT)f1.pack()f2=Frame(top)Label(f2,text=u"密码").pack(side=LEFT)E2=Entry(f2,width=30)E2.pack(side=LEFT)f2.pack()f3=Frame(top)Button(f3,text=u"登录").pack()f3.pack()top.mainloop()10.2.5单选按钮和复选按钮单选按钮(Radiobutton)和复选按钮(Checkbutton)比较:相同点:都是用于用户进行选择输入。区别:前者是互斥性选择,即用户只能从一组选项中选择一个选项;而后者支持用户选择多个选项。(1)单选按钮的创建:需要将这些按钮与一个相同的变量关联起来,以设定或获取单选按钮组当前的选中状态。

r=Radiobutton(f1,text=txt,value=val,variable=choice)(2)复选框的创建:需要将每个选项与一个不同的变量关联起来,以表示每个选项的选中状态。r=Checkbutton(f1,text=txt,variable=ch,command=update_cstr)fromtkinterimport*top=Tk()top.title(u"单选")f1=Frame(top)choice=IntVar(f1)#定义动态绑定变量fortxt,valin[('1',1),('2',2),('3',3)]:#将所有的选项与变量choice绑定起来r=Radiobutton(f1,text=txt,value=val,variable=choice)r.pack()choice.set(1)#设定默认选项Label(f1,text=u"您选择了:").pack()Label(f1,textvariable=choice).pack()#将标签与变量动态绑定起来f1.pack()top.mainloop()例10-5例10-6fromtkinterimport*top=Tk()top.title(u"多选")f1=Frame(top)choice={}#存放绑定变量的字典cstr=StringVar(f1)cstr.set("")defupdate_cstr():selected=[str(i)foriin[1,2,3]ifchoice[i].get()==1]

cstr.set(",".join(selected))fortxt,valin[('1',1),('2',2),('3',3)]:ch=IntVar(f1)#建立与每个选项绑定的变量choice[val]=ch#将绑定的变量加入字典choicer=Checkbutton(f1,text=txt,variable=ch,command=update_cstr)r.pack()Label(f1,text=u"您选择了:").pack()Label(f1,textvariable=cstr).pack()f1.pack()top.mainloop()10.2.6列表框与滚动条列表框(Listbox):用列表的形式展示多个选项以供用户选择。滚动条(Scrollbar):用来处理组件界面上一次性显示不全的情况。scrollbar=Scrollbar(top)#创建滚动条mylist=Listbox(top,yscrollcommand=scrollbar.set)fromtkinterimport*top=Tk()top.title(u"列表框")scrollbar=Scrollbar(top)#创建滚动条scrollbar.pack(side=RIGHT,fill=Y)#设置滚动条布局#将列表与滚动条绑定,并加入主窗体mylist=Listbox(top,yscrollcommand=scrollbar.set)forlineinrange(20):mylist.insert(END,str(line))mylist.pack(side=LEFT,fill=BOTH)#设置列表布局scrollbar.config(command=mylist.yview)#将滚动条行为与列表绑定mainloop()例10-710.3对象的布局方式10.3.1pack布局管理器pack布局管理器将所有控件组织为一行或一列,控件的添加顺序决定了它们在父控件中的位置。side属性:改变控件的排列位置,LEFT表示左侧对齐,RIGHT表示右侧对齐。fill属性:设置填充空间。 X:在水平方向填充, Y:在垂直方向填充, BOTH:在水平和垂直两个方向上填充, NONE:不填充。ipadx/ipady:用于设置控件内部在水平/垂直方向的间距。padx/pady用于设置控件外部在水平/垂直方向的间距。expand属性:指定如何使用额外的“空白”空间。 =1:随着父控件的大小变化而变化, =0:子控件大小不能扩展。fromtkinterimport*w=Tk()w.geometry('250x100')#改变w的大小为250x100Lbl1=Label(w,text='北京',bg='yellow3')Lbl1.pack(expand=1,side=LEFT,ipadx=20)Lbl2=Label(w,text='天津',bg='red')Lbl2.pack(fill=BOTH,expand=1,side=LEFT,padx=10)Lbl3=Label(w,text='上海',bg='green')Lbl3.pack(fill=X,expand=0,side=RIGHT,padx=10)w.mainloop()例10-810.3.2grid布局管理器grid布局管理器将窗口或框架视为一个由行和列构成的二维表格,并将控件放入行列交叉处的单元格中。row:指定控件所要放置的行编号。column:指定控件所要放置的列编号。Sticky:用来改变对齐方式。如N、S、E、W、CENTER表示上、下、左、右、中心点,还可以取NE、SE、NW、SW,表示右上角、右下角、左上角、左下角。Rowspan:指定在行方向上的跨度。Columnspan:指定在列方向上的跨度。例10-9fromtkinterimport*w=Tk()var1=IntVar()var2=IntVar()Label(w,text="姓名").grid(row=0,column=0,sticky=W)Label(w,text="住址").grid(row=1,column=0,sticky=W)Entry(w).grid(row=0,column=1)Entry(w).grid(row=1,column=1)lframe=LabelFrame(w,text='性别')radiobutton1=Radiobutton(lframe,text='男',variable=var1)radiobutton2=Radiobutton(lframe,text='女',variable=var2)lframe.grid(sticky=W)radiobutton1.grid(sticky=W)radiobutton2.grid(sticky=W)photo=PhotoImage(file="e:\\mypython\\photo.png")label=Label(image=photo)label.image=photolabel.grid(row=2,column=1,sticky=W+E+N+S,padx=5,pady=5)w.mainloop()10.3.3place布局管理器place布局管理器可以直接指定控件在父控件(窗口或框架)中的位置坐标。为使用这种布局,只需先创建控件,再调用控件的place()方法,并使用该方法的选项x和y设定坐标。父控件的坐标系以左上角为原点(0,0),x轴方向向右,y轴方向向下。>>>Label(w,text="Hello").place(x=0,y=0)>>>Label(w,text="World").place(x=199,y=199,anchor=SE)>>>Label(w,text="Hello").place(relx=0.25,rely=0.5,anchor=SW)10.4对话框10.4.1自定义对话框主要步骤:(1)先创建顶层窗口对象(2)添加所需的按钮和其他控件。例10-10简易对话框应用示例。fromtkinterimport*defMsg():top=Toplevel(width=400,height=200)Label(top,text='Python').pack()w=Tk()Button(w,text='OK',command=Msg).pack()w.mainloop()10.4.2标准对话框1.messagebox子模块

提供一系列用于显示信息或进行简单对话的消息框,可通过调用函数askyesno()、askquestion()、askyesnocancel()、askokcancel()、askretrycancel()、showerror()、showinfo()和showwarning()来创建。fromtkinter.messageboximport*ask=askyesno(title='消息框演示',message='是否继续?')ifask:showinfo(title='信息提示',message='继续!')else:showinfo(title='信息提示',message='终止!')例子:2.filedialog子模块

提供用于文件浏览、打开和保存的对话框,可通过调用函数askopenfilename()、asksaveasfilename()等函数来创建。fromtkinter.filedialogimport*askopenfilename(title='文件对话框',\filetypes=[('Python源文件','.py')])例子:打开对话框3.colorchooser子模块提供用于选择颜色的对话框,可通过函数askcolor()来创建。fromtkinter.colorchooserimport*askcolor(title='颜色对话框')10.5事件处理10.5.1事件处理程序1.事件的描述一般形式是:<修饰符>-<类型符>-<细节符>修饰符:描述鼠标的单击、双击,以及键盘组合按键等情况。类型符:事件类型,最常用的类型有分别表示鼠标事件和键盘事件的Button和Key。细节符:具体的鼠标键或键盘按键,如鼠标的左、中、右三个键分别用1、2、3表示,键盘按键用相应字符或按键名称表示。例如:<Double-Button-1>(1)常用鼠标事件<ButtonPress-1>:按下鼠标左键,可简写为<Button-1>或<1>。类似的有<Button-2>(按下鼠标中键)和<Button-3>(按下鼠标右键)。<B1-Motion>:按下鼠标左键并移动鼠标。类似的有<B2-Motion>和<B3-Motion>。<Double-Button-1>:双击鼠标左键。<Enter>:鼠标指针进入控件。<Leave>:鼠标指针离开控件。(2)常用键盘事件<KeyPress-a>:按下a键。可简写为<Key-a>或a(不用尖括号)。注意:空格键对应的事件是<space>,小于号键对应的事件是<less>。<Return>:按下回车键。不可显示字符都可像回车键这样用<键名>表示对应事件,例如<Tab>、<Shift_L>、<Control_R>、<Up>、<Down>、<F1>等。<Key>:按下任意键。<Shift-Up>:同时按下Shift键和↑键。类似的还有Alt键组合、Ctrl键组合。2.事件对象每个事件都导致系统创建一个事件对象,并将该对象传递给事件处理函数。常用的属性x和y:鼠标单击位置相对于控件左上角的坐标,单位是像素。x_root和y_root:鼠标单击位置相对于屏幕左上角的坐标,单位是像素。num:单击的鼠标键号,1、2、3分别表示左、中、右键。char:如果按下可显示字符键,此属性是该字符。如果按下不可显示键,此属性为空串。keysym:如果按下可显示字符键,此属性是该字符。如果按下不可显示键,此属性设置为该键的名称。keycode:所按键的ASCII码。注意,此编码无法得到上挡字符的ASCII码。keysym_num:这是keysym的数值表示。对普通单字符键来说,就是ASCII码。3.事件处理函数(回调(callback)函数)的一般形式def函数名(event):

函数体10.5.2事件绑定1.事件绑定的方式(1)对象绑定和窗口绑定形式如下:控件对象.bind(事件描述符,事件处理程序)fromtkinterimport*

defcallback(event):

print("clickedat",event.x,event.y)

w=Tk()

w.bind("<Button-1>",callback)

w.mainloop()例10-11窗口绑定应用示例。(2)类绑定一般形式如下:控件对象.bind_class(控件类描述符,事件描述符,事件处理程序)例10-12类绑定应用示例。fromtkinterimport*defcallback(event):print("Python")w=Tk()b1=Button(w,text="OK1")b2=Button(w,text="OK2")b1.bind_class("Button","<Button-1>",callback)b1.pack()b2.pack()w.mainloop()应用程序绑定:对应程序中的所有控件都有效。一般形式如下:控件对象.bind_all(事件描述符,事件处理程序)例10-13应用程序绑定应用示例。fromtkinterimport*defcallback(event):print("Python")w=Tk()b1=Button(w,text="OK1")b2=Button(w,text="OK2")l=Label(w,text="OK3")b1.bind_all("<Button-1>",callback)b1.pack()b2.pack()l.pack()w.mainloop()2.键盘事件与焦点焦点(focus)是指当前正在操作的对象。在处理键盘事件时,需要执行一个额外的步骤,即设置焦点。设置焦点的两种方法:调用对象的focus_set()方法使用Tab键来移动焦点例10-14焦点应用示例。fromtkinterimport*defshow1(event):print("pressed",(event.char).lower())defshow2(event):print("pressed",(event.char).upper())w=Tk()b1=Button(w,text='OK1')b1.bind('<Key>',show1)b2=Button(w,text='OK2')b2.bind('<Key>',show2)b1.focus_set()b1.pack()b2.pack()w.mainloop()第11章文件操作第11章

文件操作文件的基本概念文件读、写方法1.文件的概念

文件是一组用文件名标识的数据集合,存储在外部介质(如磁盘)上。

根据存储格式不同,分为:文本文件和二进制文件文本文件:由字符组成,按ASCII码、UTF-8或Unicode等编码,可以通过文本编辑器进行编辑,占用存储空间较多,且需要花费时间进行转换(二进制形式与ASCII码间的转换)。二进制文件:将内存中的数据按照其在内存中的存储形式原样输出到磁盘上进行存储。典型的二进制文件包括数据库文件、图像文件、可执行文件等。不能看作是字符串,只能当作字节流。11.1文件的概念2.文件操作

首先打开文件,并创建文件对象,

然后通过该文件对象对文件内容进行读写,

最后关闭文件。

读(read):从文件中取数据,输入到内存。

写(write):将内存数据输出到磁盘文件。11.2文件的打开与关闭11.2.1打开文件

在程序和操作系统之间建立起联系,把文件的一些信息通知给操作系统。1.open()函数

返回一个文件对象,对文件进行各种操作。文件对象=open(“文件名”[,“打开方式”][,缓冲区])文件名:可以包含盘符、路径,是一个字符串。

表示路径时,使用"\\"、"/"或"//"打开方式:读写方式,默认是只读。缓冲区:是否使用缓冲存储。0表示不使用缓冲存储;-1或>=1表示使用缓冲存储(默认)。打开方式:”r”:只读,文件不存在时返回异常”w”:覆盖写,文件不存在则创建,存在则完全覆盖“x":创建写,文件不存在则创建,存在则返回异常”a”:追加写,文件不存在则创建,存在则在文件最后追加内容“r+”、“w+”、“a+”:原功能基础上增加读写功能"rb"、"wb"、"xb"、"ab":二进制文件的读写模式open("test.txt","r")open("test.txt")

open("test.txt","w")2.文件对象属性引用方法:文件对象名.属性属性:name:返回文件的名字

mode:返回文件的打开方式

closed:若文件被关闭返回True,否则返回Falsefo=open("file.txt","wb")print("Nameofthefile:",)print("Closedornot:",fo.closed)print("Openingmode:",fo.mode)程序运行结果如下:Nameofthefile:file.txtClosedornot:FalseOpeningmode:wb3.文件对象方法11.2.2关闭文件

当对文件内容操作完成后,需要关闭文件,才能正确保存文件并释放资源供其它程序使用。close()方法关闭文件,其调用格式为:文件对象.close()

fo=open("file.txt","wb")print("Nameofthefile:",)fo.close()11.3文本文件的操作11.3.1文本文件的读取1.read()方法

变量=文件对象.read()

读取从当前位置直到文件末尾的内容,并作为字符串返回,赋给变量。如果是刚打开的文件对象,则读取整个文件。

可以带有参数:变量=文件对象.read(size)

读取从文件当前位置开始的size个字符,并作为字符串返回,赋给变量。(1)如果文件结束,就读取到文件结束为止。(2)如果size大于文件从当前位置到末尾的字符数,则仅返回这些字符。例10-1文本文件file.txt里的内容:Pythonisveryuseful.ProgramminginPythonisveryeasy.统计字母a的次数。分析:先读取文件的全部内容,得到一个字符串,然后遍历字符串,统计字母a的个数。infile=open(“file.txt","r")s=infile.read()print(s)n=0forcins:ifcin'a':n+=1print(n)infile.close()程序运行结果:Pythonisverynice.ProgramminginPythonisveryeasy.(空一行)22.readline()方法

变量=文件对象.readline()

读取从当前位置到行末(即下一个换行符)的所有字符,并作为字符串返回给变量。通常用此方法来读取文件的当前行,包括行结束符。如果当前处于文件末尾,则返回空串。>>>file=open(“file.txt”,“r”)>>>content=fo.readline()>>>print(content)Pythonisverynice.>>>content=fo.readline()>>>print(content)ProgramminginPythonisveryeasy.>>>content=fo.readline()#输出’’【例

11-2】已经建立文本文件

file.txt,统计文件中字母

a出现的次数,用

readline()函数实现。file=open("file.txt","r")#读取文件s=file.readline()#读取一行n=0whiles!='':#若没有读取完则继续循环 print(s[:-1])#显示文件内容 forcins:#遍历读取字符串 ifcin'a':n+=1 s=file.readline()#读取下一行print(n)file.close()#关闭文件程序运行结果:Pythonisverynice.ProgramminginPythonisveryeasy.23.readlines()方法

变量=文件对象.readlines()

读取从当前位置直到文件末尾的所有行,并将这些行构成列表返回,赋给变量。列表中的元素即每一行构成的字符串。如果当前处于文件末尾,则返回空列表。file=open("d:\\file.txt","r")list=file.readlines()print(list)file.close()['Pythonisverynice.\n','ProgramminginPythonisveryeasy.\n']输出结果:

【例

11-3】已经建立文本文件

file.txt,统计文件中字母

a出现的次数。用

readlines()方法实现。file=open("d:\\file.txt","r")#打开文件,准备读取list=file.readlines()#读取各行,并存到列表n=0forsinlist:#遍历列表print(s[:-1])#显示文件内容forcins:#遍历列表的字符串元素ifcin'a':n+=1print(n)file.close()#关闭文件11.3.2文本文件的写入1.write()方法

文件对象.write(字符串)在文件当前位置写入字符串,并返回字符的个数。Write方法执行完后并不换行!【例

11-4】从键盘输入若干字符串,逐个将它们写入

file1.txt中,知道输入“*”时结束。然后从该文件中逐个读出字符串,并在屏幕上显示出来。

file=open(“d:\\file1.txt”,“w”)#打开文件,准备建立文本文件print("输入多行字符串(输入'*'结束):")s=input()#从键盘输入一个字符串whiles!=“*”:#不断输入,直到输入结束标志file.write(s+‘\n‘)#将字符串写入文件s=input()#从键盘输入一个字符串file.close()file=open(“d:\\file1.txt”,“r”)#打开文件,准备读取s=file.read()print("输出文本文件:")print(s.strip())2.writelines()方法文件对象.writelines(字符串元素的列表)在文件当前位置处依次写入列表中的所有字符串。(1)列表类型的各字符串元素连接起来写入文件中(2)写入文件不会含引号(3)不会自动加入换行符file=open("file2.dat","w")file.writelines(["Python语言","Python程序\n","Python程序设计"])file.close()【例

11-5】从键盘输入若干字符串,逐个将它们写入

file1.txt的尾部,直到输入“*”时结束。然后从该文件中逐个读出字符串,并在屏幕上显示出来。print("输入多行字符串(输入“*”结束)")list=[]whileTrue:

s=input()ifs=="*":breaklist.append(s+"\n")file=open("d:\\file1.txt","a")file.writelines(list)file.close()file=open("d:\\file1.txt","r")s=file.read()print("输出文本文件:")print(s.strip())有以下程序代码,输出结果是_______。f1=open('d:\\a1.txt','w')f1.write("1")f1.write('2')f1.close()f1=open('d:\\a1.txt','r')s=f1.readline()print(s)12有以下程序代码,输出结果是_______。f1=open('d:\\a1.txt','w')list=['a','b\n','c','d']f1.writelines(list)f1.close()f1=open('d:\\a1.txt','r')s=f1.readline()print(s)ab已经建立文本文件data.txt,文件中的内容为:WelcometoNanchang,下面代码执行后的结果为_____________。infile=open("data.txt","r")#打开文件,准备输出文本文件

ls=infile.readlines()#读取各行,得到一个列表

n=0

forsinls:#遍历列表

print(s[:-1])#显示文件内容

forcins:#遍历列表的字符串元素

ifcin'aeiouAEIOU':n+=1

print(n)

infile.close()61.tell()方法格式:

文件对象.tell()

功能:返回文件的当前位置,即相对于文件开始位置的字节数,下一个读取或写入操作将发生在当前位置。例如:>>>fo=open("data.txt","r")>>>fo.tell()0>>>content=file.read(6)>>>num=file.tell()611.4.1文件的定位11.4二进制文件的操作2.seek()方法:更改当前的文件位置。文件对象.seek(偏移[,参考点])偏移:移动的字节数

正数向文件尾移动,负数向文件头移动参考点:当前文件的位置

0表示文件头部,默认值为0

1表示当前位置

2表示文件末尾file=open("d:\\file.txt","rb")distance=file.seek(6,0)print(distance)content=file.read()print(content)运行结果6b'isverynice.\r\nProgramminginPythonisveryeasy.\r\n'11.4.2二进制文件的读写二进制文件的读/写操作可以用文件对象read()和write()方法。例11-6s=input('输入一个字符串:')s=s.encode()#变成字节数据file=open('file2.txt',"wb")#建立二进制文件file.write(s)file.close()file=open('file2.txt','rb')#读二进制文件list=[]forninrange(1,len(s)+1):file.seek(-n,2)#文件定位从最后一个字符到以一个字符s=file.read(1)#读一个字节s=chr(ord(s.decode())^24)#加密处理list,append(s)list=''.join(list)#将序列元素组合成字符串print(list)file.close()2.struct模板用字符串类型来存储二进制数据。pack()函数:把整型(或浮点型)打包成二进制的字符串。字符串=struct.pack(‘包装类型’,包装数据)>>>importstruct>>>a=65>>>bytes=struct.pack('i',a)>>>print(bytes)b’A\x00\x00\x00’解包元组=struct.unpack(‘解包类型’,解包数据)unpack()函数:将字节数据转换成整型(或浮点型)>>>file=open("file3.txt","rb")>>>bytes=file.read(4)>>>a=struct.unpack('i',bytes)>>>print(a)(65,)注意,unpack()函数执行后得到的结果是一个元组。3.pickle模块用于Python的对象(包括内置类型和自定义类型)直接写入到文件中,而不需要先把它们转化为字符串再保存,也不需要底层的文件访问操作把它们写入到一个二进制文件里。2个常用的函数:dump()函数pickle.dump(数据,文件对象)load()函数变量=pickle.load(文件对象)importpickleinfo={'one':1,'two':2,'three':3}file=open('file4','wb')pickle.dump(info,file)file.close()>>>importpickle>>>file2=open('file4','rb')>>>info1=pickle.load(f2)>>>file2.close()>>>print(info1){'three':3,'two':2,'one':1}11.5文件管理方法11.5.1文件重命名rename()函数os.rename(“当前文件名”,“新文件名”)>>>importos>>>os.rename(“test1.txt”,“test2.txt”)11.5.2文件删除remove()函数os.remove(“文件名”)>>>importos>>>os.remove(“text2.txt”)11.5.3Python中的目录操作1.mkdir()函数os.mkdir(“新目录名”)>>>importos>>>os.mkdir(“test”)2.chdir()函数os.chdir(“要成为当前目录的目录名”)>>>importos>>>os.chdir("d:\\home\\newdir")3.getcwd()函数一般格式为:os.getcwd()>>>importos>>>os.getcwd()4.rmdir()函数

一般格式为:os.rmdir(“待删除目录名”)>>>importos>>>os.rmdir('d:\\aaaa')第12章Python语言与大数据挖掘12.1大数据的概念12.1.1大数据的含义大数据的特征归纳为4个“V”体量大(Volume):数据体量巨大,大数据的起始计量单位至少是PB(103TB)、EB(105TB)、或ZB(109TB)速度快(Velocity):数据收集频率高,维度大,处理速度快。类型多(Variety):数据类型繁多,比如网络日志、视频、图片、地理位置信息等价值大(Value):值密度低,商业价值高,须进行数据挖掘。12.1.2大数据的应用方法例1.啤酒与尿布这个故事发生于20世纪90年代的美国超市中,超市管理人员分析销售数据时发现了一个令人难于理解的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品会经常出现在同一个购物篮中,这种独特的销售现象引起了管理人员的注意,经过后续调查发现,男性顾客在购买婴儿尿片时,常常会顺便搭配几瓶啤酒来犒劳自己,于是尝试推出了将啤酒和尿布摆在一起的促销手段。没想到这个举措居然使尿布和啤酒的销量都大幅增加。如今,这一案例的已经被列为数据分析的经典,被人津津乐道。12.1.3大数据的分析方法1.采集(存储)指利用多个数据库来接收发来自客户端的数据,并且用户可以通过这些数据库进行简单的查询和处理工作。2.导入和预处理将来自前端的数据导入一个集中的大型分布式数据库或者分布式存储集群,并且可以在导入基础上做一些简单的清洗和预处理工作。导入与预处理过程的特点和挑战主要是导入的数据量大,每秒钟的导入量经常会达到百兆甚至千兆级别。3.统计和分析利用分布式数据库或者分布式计算集群对存储在其中的海量数据进行普通的分析和分类汇总,以满足大多数常见的分析需求。4.挖掘(算法)数据挖掘一般没有预先设定好的主题,而是对现有数据进行基于各种算法的计算,从而达到预测效果,并实现一些高级别的数据分析需求。典型的算法包括用于聚类的K-Means算法、用于统计学习的SVM算法以及用于分类的NaiveBayes算法等。一些实时性需求可以用到EMC的GreenPlum、Oracle的Exadata,以及基于MySQL的列式存储Infobright等。而一些批处理或者基于半结构化数据的需求可以使用Hadoop。12.2Python文本预处理1字符及字符串统计len()函数:分别对字段自身长度、列表长度和嵌套列表长度进行统计。2字符串连接与拆分1.连接方法:加号‘+’。例如:‘Python’+‘DataAnalysis’

2.连接方法:字符串格式化输出。例如:website=‘%s%s%s’%(‘Python’,‘tab’,‘com’)

3.连接方法:join()4.拆分方法:split()>>>listStr=['Python','tab','.com']>>>sentence=''.join(listStr)12.2.3字符串查询在Python中in可以实现直接查询(集合操作)。自定义一个列表查询函数find_words()。deffind_words(content,pattern):list=[]if(patternincontent[i]):list.append(content[i])returnlistlist=find_words(S5,'人工智能')print(list)12.2.4字符串替换replace()函数可以对字符串的内容进行替换。自定义一个针对列表的字符串替换函数。deflist_replace(content,old,new):if(content)foriinrange(len(content)):content[i].replace(old,new)returncontentlist_replace(S5,'人工智能','ArtificialIntelligence')print(S5)12.3网络爬虫网络爬虫,又称网页蜘蛛或网络机器人,按照一定的规则自动抓取网络中的信息。12.3.1网页的基础知识1.网页资料结构一个HTML网页中含有各种网页的元素(elements),每个元素通常都会使用HTML的标签(tags)前后包起来。例如:<P>网页内容</P>

大部分HTML元素都是以巢状资料结构存在的。<ul><li>foo</li><li>bar</li></ul>2.路径选择工具:

SelectorGadget是GoogleChrome浏览器的一个插件工具,可以用来显示网页中任意元素的CSS选择器路径,帮助快速撷取网页上的资料。12.3.2Python爬虫步骤1.读取网页Importrequests#加载网页抓取包defread_html(url,encoding='utf-8'):#定义读取html网页函数response=requests.get(url)response.encoding='utf-8'return(response.text)url='/translate?aldtype=16047&query=%E7%88%AC%E8%99%AB%0D%0A&keyfrom=baidu&smartresult=dict&lang=auto2zh#/zh/en/'page=read_htmlprint(page)2.提取信息打开百度翻译

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论