第九章、注释、文件读写
9.1.注释
python的注释对代码的执行不起任何作用。它是用来帮助读者理解代码的
对初学者来说,写注释好像很痛苦
但是对于老司机来说,注释对保证代码可读性至关重要。因为在一个公司里,需要团队协助开发的时候。你的代码会有其他人来读的。而且
即使是你只打算给自己看得代码,如果没有教好的注释,很可能过了几个月,自己都看不懂
python注释的有如下几种:
** 全行注释
#分别是主机地址和端口号 hostaddress = ('182.168.12.34',80)
** 行内地址
ipaddress = '192.168.1.34' #ssh地址
** 多行注释
... 以下分别是主机地址 还有端口号 ... hostaddress = ('192.168.1.3',80)
** 函数doc string注释
def demo(): "this is a doc string" return True
9.2.文件的读写
文件的操作,比如读取,写入,是计算机软件经常要干的事情
9.2.1.文件对象
不管是文件的读取,还是写入,我们都是通过一个文件对象,进行操作。而文件对象的获取,则是通过python内置函数open来得到的
open的基本语法如下
file_object = open(file_name,access_mode='r')
其中file_name是文件名,可以是绝对路径或者相对路径
access_mode 是访问方式。文件有很多种访问方式,常见的是一下几种:
*** r
只是为了读取文件而打开文件。文件指针在文件的开头。这也是缺省的文件打开方式。
*** w
只是为了写文件而打开文件。如果文件已经存在,其内容将被清空。如果文件不存在,则创建一个文件
*** a
只是为了在文件末尾追加内容而打开文件。如果文件存在,文件指针在文件的结尾,如果文件不存在,则创建一个文件
*** r+
为了读取并且写文件而打开文件。文件指针在文件的开头。如果文件不存在,会报错
*** w+
为了读取并且写文件而打开文件。如果文件已经存在,其内容将被清空。如果文件不存在则,创建一个文件
#如下是一些打开文件的例子 fp = open('d:/file'1) #以只读方式打开文件 fp = open('test','w') #以写文件方式打开 fp = open('data','r+') #r+读取 并且写入文件
9.2.2.文件内容的读取
*** read
文件对象有个方法read,用来读取文件的内容。
read方法可以有一个参数size表示读取多少个字节的内容。如果不填写该字节,表示读取所有的文件内容
我们假设,文件test.txt内容如下
Augus
xkdvkdkvld
optest
执行如下代码
fh = open(r'H:\test.txt') st1 = fh.read(2) print(st1)
Au
st2 = fh.read(2)
print(st2)
gu
st3 = fh.read()
print(st3)
s
xkdvkdkvld
optest
fh.close()
**注意,文件对象有个文件指针指向文件的当前处理的字符位置。随着read的调用,它的位置在不断的变化
文件处理完了,一定要调用close方法关闭文件
*** readline
文件对象的方法readline用来一行行的读取文件
fp = open(r'H:\test.txt') st1 = fp.readline() print(st1) Augus st2 = fp.readline() print(st2) xkdvkdkvld st3 = fp.readline() print(st3) optest fp.close()
** readlines
文件对象的方法readlines用来一下子把文件的内容按行全部读出来,并且每行的内容存到一个列表中返回
fp = open(r'H:\test.txt') lines = fp.readlines() print(lines) print(lines[0]) Augus\n print(lines[1]) xkdvkdkvld\n print(lines[2]) optest fp.close()
9.2.3.文件内容的写入
文件对象的内置方法write可以向当前文件指针的位置,写入字符串到文件里面
文件对象的内置方法tell可以得到当前文件指针所指向的位置
文件对象的内置方法seek则可以在文件中前后移动指针位置。seek有offset和whence两个参数。whence表示
从什么地方开始移动。0从起始位置移动,1从当前位置移动,2从结束位置移动。而offset表示移动多少个字节的位置
f = open('H:\\test.txt','w') f.write('this is a test') f.close()