自己动手做爬虫三

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43999482/article/details/101990822

文件的一个介绍

#文件可以做到数据的永久存储,文件已硬盘位载体
# r,只读,如果文件不存在会崩溃
#w,只写
#a,追加写入
#rb,已二进制方式读取文件数据
#wb,已二进制方式写入文件数据
#wb,已二进制方式追加文件数据
#打开文件用open函数
# file = open("11.txt",'r',encoding="utf-8")#表示只读
# content = file.read()
# print(content)
# #关闭文件
# file.close()

#w模式,如何不存在,那么就会创建一个文件,让后写入
#如果有,先会把源数据清空,在写入
# file = open("11.txt",'w',encoding="utf-8")#表示只写
# print(file.encoding)
# file.write("哈哈")
# #打开文件多次写入数据不会覆盖前面的数据
# file.write("ada")
# #关闭文件
# file.close()

file = open("11.txt","a",encoding="utf-8")
file.write("akalkda")
file.close()

在Python2中不支持中文,要指定编码格式
#--coding:utf-8--
#在python3中支持中文

# #提示binary mode doesn't take an encoding argument,表示不要指定编码格式,二进制读取数据
# #他是由16进制进行体现的,一个汉字占用三个字节
# file = open("11.txt","rb")
# file_data = file.read()
# #对二进制数据进行解码,编码解码要要成对出现
# content = file_data.decode("utf-8")
# print(content)
# file.close()


# #二进制写入数据
# file = open("11.txt","wb")
# content = "hello    哈哈"
# file_data = content.encode("utf-8")
# file.write(file_data)
# file.close()

#二进制追加数据
file = open("11.txt","ab")
content = "hello    哈哈"
file_data = content.encode("utf-8")
file.write(file_data)
file.close()

这个分别只支持直接的模式

#r+,w+,a+,支持读写,但是要看前面的主模式
#rb+,wb+,ab+,支持读写,但是要看前面的主模式
#只要没有b,就要加encoding
file = open("11.txt","r+",encoding="utf-8")
print(file.read())
#写入数据时不会清空数据,把指定的文件中的数据替换成其他的数据
file.write("aa")
file.close()

文件的不同读取操作


#读取文件的操作read,readline,readlines
file=open("11.txt","r",encoding="utf-8")
#读取指定长度的数据,提示,如果是r模式读取的是指定数据的长度
content = file.read(4)
print(content)
file.close()

#读取文件的操作read,readline,readlines
file=open("11.txt","rb")
#读取指定长度的数据,提示,如果是r模式读取的是指定字节数
content = file.read(3)
#注意,utf-8一个汉字占3个字节,数字与字符为1
print(content)
file.close()

#从指定的文件指针读取
file = open("11.txt","rb")
#查看指针位置
result = file.tell()
print(result)
#设置指针位置
result = file.seek(9)
print(result)
file_data = file.read()
result = file_data.decode()
print(result)
file.close()
file = open("2.txt","rb")
#读取一行数据,当遇到“\n”的时候读取数据结束
file_data = file.readline()#把数据放在列表中
print(file_data)
file.close()

file = open("2.txt","rb")
#读取一行数据,当遇到“\n”的时候读取数据结束
file_data = file.readlines()#把数据放在列表中
print(file_data)
file.close()

文件的拷贝

#1.打开原文件读取数据
file  = open("3.txt","rb")
#读取文件全部数据
file_data = file.read()
#2.打开目标文件,准备写入数据
destnation = open("3[副本].txt","wb")
#把源文件写入到目标文件
destnation.write(file_data)#可以加上路径
destnation.close()
file.close()

模拟大文件的拷贝


#1.打开原文件读取数据
file  = open("3.txt","rb")
#2.打开目标文件,准备写入数据
destnation = open("3[副本].txt","wb")
#循环读取文件的数据
while True:
    file_data = file.read(1024)
    #if(len(file_data)>0):
    if file_data:#判断二进制变量是否有数据
        #表示有数据
        #把源文件写入大目标文件
        destnation.write(file_data)
        print(file.tell())#查看文件指针
    else:
        print("数据读取完成",file_data)
        break
destnation.close()
file.close()

if类型的扩展


#if:bool 数字,容积(字符串,列表,元组,字典,集合),None

if True:
    print("条件成立")

#数字,非零即为真
if -1:
    print("条件成立")


#容积类型,没有数据,即假,有数据为真
if b"xx":
    print("条件成立")

if [1,2]:
    print("条件成立")

if (1,):
    print("条件成立")

#None 表示假           非None为真

文件与文件夹的相关操作

# file = open("6.txt","wb")
# data = "djkajdka"
# file_data = data.encode("utf-8")
# file.write(file_data)
# file.close()


# import os #文件和文件夹相关的操作(py文件)
# #重命名,提示目标文件要存在
# os.rename("6.txt","666.txt")

import os
# #创建文件夹
# os.mkdir("aaa")
#修改文件名字
# os.rename("aaa","bbb")
#1.指定路径创建
# file = open("bbb//1.txt","wb")
# data = "jaskfaskjas"
# file_data = data.encode("utf-8")
# file.write(file_data)
# file.close()


# #2.切换到指定bbb目录创建,默认的路径是py文件操作的目录
# current_path = os.getcwd()
# print(current_path)#查看当前目录的路径
# os.chdir("bbb")
# current_path = os.getcwd()
# print(current_path)
# file = open("2.txt","wb")
# data = "jaskfaskjas"
# file_data = data.encode("utf-8")
# file.write(file_data)
# file.close()

# os.renames("ccc/3.txt","aaa/1.txt")#修改文件夹同时修改文件名
#
# #查看目录列表
# file_name_list = os.listdir("F://python_3")
# print(file_name_list)


# os.chdir("bbb")#切换到目录内
# current_path = os.getcwd()
# print(current_path)#查看当前目录的路径
# #"."表示当前目录,".."表示上一级目录
# file_list = os.listdir()#os.listdir(".")
# print(file_list)

#删除文件
# os.remove("bbb/1.txt")
#删除文件夹
# os.rmdir("bbb")#rmdir只能删除空目录


import shutil #文件操作的高级模块

# #删除目录树
# shutil.rmtree("aaa")


#扩展
#获取11.txt的决对路径,(/,c/d)
abs_path = os.path.abspath("11.txt")
print(abs_path)

#根据绝对路径获取路径的文件名
file_name = os.path.basename(abs_path)
print(file_name)


#获取文件名与后缀
file_name, file_extend = os.path.splitext(file_name)
print(file_name, file_extend)

面向对象与面向过程

#比如:实现炒菜
#过程:1摘菜2洗菜3作料4翻炒5出菜
#对象:找一个对象完成上述过程

#面向对象与面向过程是开发的一个模式
#面向对象是程序员找一个功能对象,功能对象提供方法,程序员只负责调用,不关心实现
#面向过程:自己亲力亲为

#开发模式
#面向对象:你-》功能对象。功能方法
#面向过程:你-》功能函数

类和对象的一个介绍

#类:事和物的一个分类,类是一个概念
#对象:具体到某一个是或无就是对象

#汽车-》类
#张三的汽车-》对象

类的定义

和Java差不多

旧式类
#类的定义需要class关键字,人是由特征和行为(动作)
#类里面有属性(特征)和方法(行为)
#这是旧式类,不主动继承object,
#在Python里面就是类默认继承object,Python2中不会
class Teacher:
    #类属性
    country = "中国"
    #方法
    def show(self):
        print("hahaha")

#通过类创建对象,类是一个磨具,磨具可以创建很多个对象

teacher = Teacher()#类名,表示创建一个对象
#调用方法,对象名.方法名
teacher.show()
#查看类继承的父类
print(Teacher.__ba
新式类
#新式类的定义方式,建议大家使用新式类的方式
class Teacher(object):
    #类属性
    country = "中国"
    #方法
    def show(self):
        print("hahaha")
print(Teacher.__base__)

给对象添加属性及获取属性信息

class Teacher():
    def show(self):
        print("很不错")

teacher = Teacher()
#动态添加对象属性
teacher.name = "历史"
teacher.age = 18

#获取数据对应的属性
print(teacher.name,teacher.age)
#修改
teacher.name = "wangw"
print(teacher.name,teacher.age)
teacher.show()

魔法方法__inin__

#当完成某一个功能操作的时候会自动调用某方法,比如__init__,对象初始化会调用该方法
#魔法方法的表现形式:以__开始,以__结束的方法就叫魔法方法
class Teacher(object):
    #可以添加参数
    def __init__(self,name,age):
        #self:表示当前的对象
        #给对象初始化,添加对象属性的
        print("对象初始化")
        self.name = name
        self.age = age
#显示老师信息的方法
    def show_info(self):
        #self.当前对象,那个对象调用他,self就是谁
        print(self.name,self.age)
teacher = Teacher("ls",20)
teacher.show_info()

teacher1 = Teacher("ww",20)
teacher1.show_info()

一个小程序抽象类

#下面我以学生进行一个抽象
class Student(object):
    # 可以添加参数
    def __init__(self, **kwargs):
        #对象初始化
        for key,value in kwargs.items():
            print(key, value,end = "\t",)


student1 = Student(name = "张三",sex = "男",age = 18,school = "中学")
student1 = Student(name = "李四",sex = "男",age = 18,school = "小学")

这里我只加了一些部分信息,可自行以传关键字的方式添加
谢谢大家

猜你喜欢

转载自blog.csdn.net/weixin_43999482/article/details/101990822
今日推荐