首页 > 代码库 > python学习笔记:基础Day03
python学习笔记:基础Day03
一.文件操作
在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘。所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
1.读文件
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符。
$ cat test.txt $ This is a file
$ life is short
$ use python ------------------------ f = open("test.txt",‘r‘) #打开test.txt文件
文件打开成功之后,开始读取文件内容,我们可以使用read()来一次性将文件内容读到内存中。
print (f.read()) >>This is a file >>life is short >>use python
调用read()会一次性读取文件的全部内容,同样的还有readlines(),一次性将文件读入内存中并逐行返回一个列表,如果读取一个大文件,这个时候内存可能就会撑不住了,因为可以通过反复调用 read(size)来达到目标,当然,你也可以将文件逐行读取到内存中。
for line in f: print(line.strip()) >>This is a file >>life is short >>use python
这种方式等同于readline(),对于大文件的处理,更加高效。但当内存足够打开一个完成的文件时,read()和readlines()则更有效率,readlines()更加适用于配置文件。
因此,我们需要根据不同的情况,选择最优的方式来进行读操作。
文件操作的最后一步则是调用close()方法来关闭文件,文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。
当然,为了避免某些时候忘记关闭文件,python提供了一个更加简介的文件打开方式——with语句。
with open ("test.txt",‘r‘) as f: print(f.read())
2.写文件
写文件和读文件是一样的,唯一区别是调用open()
函数时,传入标识符‘w‘
或者‘wb‘
表示写文本文件或写二进制文件
with open ("test.txt",‘w‘) as f: f.write("hello world") -------------------------------------- $ cat test.txt $ hello world
你可以反复调用write()
来写入文件,但是务必要调用f.close()
来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入,如果想让内容实时写入,可以使用flush()。只有调用close()
方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()
的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with
语句来得保险。
3.文件操作标识符
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
r+ 以读写方式打开文件。文件指针将会放在文件的开头。
w 以只写方式打开文件。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 以读写方式打开文件。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 以读写模式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
4.文件操作其他小tips
tell(): 打印当前位置
f = open("test",‘r‘)
print(f.read(10))
print(f.tell())
f.close()
>>This is a
>>10
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
f = open("test",‘r‘) f.seek(10,0) print(f.read()) f.close()
>>file >>life is short >>use python
二.字符编码与转码
参考文章:
http://www.cnblogs.com/yuanchenqi/articles/5956943.html
三.函数基础
函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
特性:
1.减少重复代码
2.增加可扩展性
3.方便日后维护
1.定义一个函数
def hello(): #定义一个函数名为hello的函数 print("hello world\n") hello() #调用hello()函数 >>hello world
2.函数参数
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
未待完续...
python学习笔记:基础Day03