python文件写入也可以进行网站爬虫, 下面例子 是将http://www.baidu.com的代码写入文件中,然后再读取到出来进行打印。
# /usr/bin/python from urllib import request # 从百度读取数据存入aaa.txt中 response = request.urlopen("http://www.baidu.com/") output = open("C:/Users/lenovo/Desktop/aaa.txt", "w") output.write(str(response.read())) output.close() #从aaa.txt中存入数据打印到命令行 read = open("C:/Users/lenovo/Desktop/aaa.txt", "r") for line in read: print(line)
python的File 和OS这边暂时不做处理,相关的异常也在数据解析过程中再慢慢总结。因为目前主要是要做数据解析部分。
众所周知,python是面向对象的语言,因此对象的使用也很关键。这我对对象的基本使用不做说明,默认是了解的。
class MyClass: i = int(123) def __init__(self): self.i=5 def me(self): print("111") x=MyClass() x.me() print(x.i,end="")
self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。
类中属性中 加 ‘__’代表的是 私有属性,在外部无法直接访问。
Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。
#!/usr/bin/python3 # 类定义 class People: # 定义基本属性 name = '' age = 0 # 定义私有属性,私有属性在类外部无法直接进行访问 weight = 0 # 定义构造方法 def __init__(self, n, a, w): self.name = n self.age = a self.weight = w def speak(self): print("%s 说: 我 %d 岁。" % (self.name, self.age)) class student(People): __grade = int(0) def __init__(self, n, a, w, g): People.__init__(self, n, a, w) self.__grade = g def speak(self): print("{0:2}说: 我{1:2}岁;{2:2}kg;{3:2d}分;".format(self.name, self.age, self.weight, self.__grade)) s = student('ken', 10, 60, 20) s.speak()
值得一提的是,python同时也支持多继承。
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
同样的不难推测出:
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。
类的专有方法:
- __init__ : 构造函数,在生成对象时调用
- __del__ : 析构函数,释放对象时使用
- __repr__ : 打印,转换
- __setitem__ : 按照索引赋值
- __getitem__: 按照索引获取值
- __len__: 获得长度
- __cmp__: 比较运算
- __call__: 函数调用
- __add__: 加运算
- __sub__: 减运算
- __mul__: 乘运算
- __div__: 除运算
- __mod__: 求余运算
- __pow__: 乘方
文件通配符
glob模块提供了一个函数用于从目录通配符搜索中生成文件列表:
>>> import glob >>> glob.glob('*.py') ['primes.py', 'random.py', 'quote.py']
因为数据解析部分 有关于时间的加减,因此这部分强调在日期和时间模块。
日期和时间
datetime模块为日期和时间处理同时提供了简单和复杂的方法。
支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。
该模块还支持时区处理:
>>> # dates are easily constructed and formatted >>> from datetime import date >>> now = date.today() >>> now datetime.date(2003, 12, 2) >>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.") '12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.' >>> # dates support calendar arithmetic >>> birthday = date(1964, 7, 31) >>> age = now - birthday >>> age.days 14368
关于python中的时期的处理在后面我还会专门地提出来说一下。