一.文件的操作

    1.打开文件

file_object=open(filename,mode='r',buffering=-1)

          open返回一个文件对象,文件对象可迭代

           mode为可选参数,默认值为‘r’

           buffering为可选参数,默认值为-1,表示使用默认缓冲,0表示不使用缓冲,1或大于1的值表示缓冲一行或指定缓冲区大小

       open()函数--mode

mode  

功能

r

只读方式打开文件

w

以写方式打开文件并清空原文件内容,没有就创建文件写

x

以写方式打开文件,如果文件存在则报错

a

以追加方式打开文件

r+  

可读,可写,通过seek定位指针位置,想在那写就在那里写(写的内容是向后覆盖)

w+

先清空原内容,再可写, 可读

a+

可读,可写(不管指针位置在那里,永远追加到文件尾)

x+

文件存在就报错,不存在就创建可读,可写

rb  或 r+b

"b"表示以字节的方式操作;
以二进制读或二进制读写打开文件(参见r或r+)

wb或w+b

以二进制写或二进制读写打开文件(参见w或w+)

xb或x+b

以二进制写或二进制读写打开文件(参见x或x+)

ab或 a+b

以二进制追加或二进制读写追加打开文件(参见a或a+)

      

    2.操作文件       

read()   #无参数,读全部内容,有参数,无b按字符读;有b按字节读
   tell()   获取当前指针位置(字节)
   seek()   指针跳转到指定位置(字节)
   write()  写数据,无b写字符,有b写字节
   close()  关闭文件(关闭前会刷新缓存区的内容到磁盘)
   fileno() 文件描述符
   flush()  刷新到硬盘
   readable() 判断是否可读
   readline() 仅读取一行
   truncate() 截断数据,只保留指针前面的内容,指针后面的内容清空
   for 循环文件对象,eg
         f=open('dd',r)
         for line in f:
           print(line)

    3.关闭文件

             文件关闭调用close()方法或者使用with管理上下文, with打开文件操作完后会自动关闭文件(可以同时打开多个文件)

#把db1文件里前10行,写入db2文件里
       with open('db1', 'r', encoding='utf-8') as f1, open('db2', 'w', encoding='utf-8') as f2:
       times=0
       for line in f1:
           times += 1
           if times <= 10:
              f2.write(line)
           else:
              break


二.内置函数的补充
ASCII码的转换:
  chr()  把数字转换成ascii码里的字母,chr(65)结果为大A
  ord()  把字母转换成ascii码里的数字,ord(‘a’)结果为97
bytes()  把字符串转换为python的字节码,eg,bytes('解释',encoding='utf-8')运行结果为:b'\xe8\xa7\xa3\xe9\x87\x8a'
str()    把python字节码转换成字符串,eg str(bytes('解释',encoding='utf-8'),encoding='utf-8'),运行结果为: 解释
compile()  把字符串或python文件编译成python的字节码           
exec() 执行编译后的python字节码,可以接收字符串编译执行,也可以执行字符串表达式,不返回结果         
eval() 执行字符串表达式,并返回执行结果
s = 'print(123)'
    com=compile(s,'<string>','exec')       
    print(com)                       #运行结果:<code object <module> at 0x00622660, file "<string>", line 1>
    exec(com)   #运行结果为:123
    print(eval(('8-2+88'))  运行结果为94
    print(exec('9-8+9')     返回结果为None