python爬虫开发与项目实战学习笔记,(一)

2021/8/21 20:06:15

本文主要是介绍python爬虫开发与项目实战学习笔记,(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

------------恢复内容开始------------

                                 1.1 文件读写

            1,打开文件:open(name[.mode[.buffering]])  函数                        参数:文件名    返回值:文件对象

    2,文件模式:

 mode(模式)参数:

r: 读模式

w : 写模式

a : 追加模式

b : 二进制模式

+ :读/写模式

例:rb  意为读一个二进制文件 。

     3,文件缓冲区:

 buffering(缓冲区):

0:无缓冲区 (直接写到硬盘上)

1:有缓冲区(先写入内存,仅使用flush函数或者close函数才会将数据更新到硬盘)

大于1的数字:缓冲区的大小(单位为字节)

负数:使用默认缓冲区的大小

    4,文件读取:

read( ) :   读取(写入内存)    返回值:str类型的对象 : >>>f.read()"文件名"

readlines( ) : 按行读取       返回值:str类型的对象 : >>>f.read()"文件名"

close( ): 关闭文件         

try...finally 函数

with 函数

    5,文件写入:

类似于文件读取,区别:调用open方法时 ‘w‘或者’wb‘代表写入文本文件或者写入二进制文件

 

 

 

 

                                   1.2  操作文件和目录  

  Python对文件和目录的处理常常采用 os模块和shutil模块

1,获得当前python脚本工作的目录途径  os.getcwd()

2,返回指定目录下的所有文件和目录名 os.listdir()

3,删除一个文件:os.remove(filepath)

4,删除多个空目录:os.removedirs(r"d:\path")

5,检验一个路径是否为文件:os.path.isfile(filepath)

6,判断是否是绝对路径:os.path.isabs()

7,检验路径是否真实存在:os;path.exists()

8,分离一个路径的目录名和文件名 :os.path.split()          返回值:一个元组

9,分离扩展名:os.path.splitext()

10,获取路径名:os.path.dirname(filepath)

11,获取文件名:os.path.basename(filepath)

12,读取和设置环境变量:os.gentenv()与os.puntenv()

13,给出当前平台使用的行终止符:os.linesep    windows: '\r\n'   Linux/Unis:'\n'    Mac:'\r'

14,只是你正在使用的平台:os.name        windows:'nt'     Linux/Unix:'posix'

15,重命名文件或者目录:os.rename(old,new)

16,创建多级目录:os.makdedirs(r"c:\python\text")

17,创建单个目录:os.mkdir("text")

18,获取文件属性:os.stat(file)

19,获取文件大小:os.path.getsize(filename)

20,复制文件夹:shutil.copytree("olddir","newdir")        //olddir和newdir都只能是目录,且newdir必须不存在

21,复制文件:shutil.copyfile("oldfile","newfile")   //oldfile和newfile都只能是文件;

22,移动文件:shutil.move("oldpos","newpos")

23:删除目录:os.rmdir("dir")    只能删除空目录;

       shutil.rmtree("dir")   空目录,由内容的目录都可以删

 

 

 

 

                 1.3     序列化设计 

 序列化:把内存中的变量变成可存储或可传输的过程。

反序列化:将序列化的对象重新读取到变量中。

 Python中提供实现序列化的模块:cPickle(c语言编写->效率高),pickle    使用顺序:先cPickle后pickle 

pickle 序列化使用的方法:dumps和dump

  dumps:将对象序列化成一个str,然后将这个str写入文件进行保存。

  dump:将序列化后的对象直接写入文件

pickle反序列化的方法:loads和load

  loads:将序列化后的文件从磁盘读取为一个str,然后反序列化成对象

  load:将文件直接反序列化成对象

对象序列化的标准格式:XML,JSON

 

 

 

 

    1.4进程和线程

1,多进程:两种方法

    (一)fork:基于os模块     仅适用于Unix和Linux 不支持windows

      (二)mulriprocessing:    跨平台实现

    (三)Pool    进程池

(一):os模块的fork:来自unix/Lunix  调用一次 返回两次    1,复制:将当前程序(父程序),复制出子程序  2,返回:fork程序分别在父子程序返回,子程序返回0,父程序返回子程序的ID。(二):multiprocessing模块:该模块提供了一个Procss类来描述一个进程对象,创建程序时,只需要传入一个执行函数和函数的参数,即可完成一个对象的创建,用start()来启动进程,用join()方法实现进程间的同步。

(三)成千上百的大数量创建子程序:进程池Pool    Pool来自mulriprocessing模块,可以提供指定数量的进程供用户调用,默认大小是计算机的核数,当有新的请求提交到Pool中,如果池还没有满,就会创建一个新的进程,如果池已满,则请求等待,直到池中有进程结束,才会创建新的进程来处理它。

注意:Pool对象调用join()方法会等待子进程执行完毕,调用join()之前必须调用close(),调用close()之后就不能添加新的Process了。

 

Python关键字:def :定义/创建函数。

2,进程间的通信

  (一)Queue(多进程安全的队列):多个进程间的通信

  (二)Pipe:两个进程间的通信

(一)Queue:提供两个方法实现通信:Put和Get

 

os.getpid  :获取当前进程ID,返回值为整型

  1,Put:用以插入数据到队列中,它有两个可选参数:blocked和timeout    若blocked为True(默认值),并且timeout也为正值,g该方法会阻塞timeout指定的时间,直到队列有剩余的空间,如果超时,会抛出Queue.Full异常。如果blocked为Flase,但该Queue已满,会立即返回Queue.Full的异常。

  2,Get:可以从队列中读取和删除一个元素。同样,Get有两个可选参数:blocked和timeout。如果blocked为True,并且timeout为正值,那么在等待时间内没有等到任何元素,会抛出Queue.Full的异常。如果blocked为Flase,分两种情况,如果Queue有一个值可用,则立即返回该值;否则,如果队列为空,则立即抛出Queue.Empty的异常

 

 

 

------------恢复内容结束------------



这篇关于python爬虫开发与项目实战学习笔记,(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程