file

file related function
open,close,read,write

1. open 函数

file_obj = open(file_name , access_mode, buffering)

  • file_name, 一般用绝对路径
  • access_mode,读写模式

    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
    w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

  • buffering

    0,就不会有寄存;
    1,访问文件时会寄存行;
    大于1的整数,表明了这就是的寄存区的缓冲大小;
    负值,寄存区的缓冲大小则为系统默认

access_mode

一般用的是r+/w+
r+打开一个文件用于读写。文件指针将会放在文件的开头。

读写,文件不存在不会新建文件,抛出异常;

w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

读写,文件不存在会新建文件;

a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

读写,追加append模式

2. read 读函数/seek 读指针函数

  • read(),当前位置-最后位置 读取,str
  • readline(), 读取当前行,str
  • readlines(),读取当前位置-最后位置,list
  • for line in fileobj: 循环读取当前行,str
  • seek()文件指针移动函数,返回None type
  • tell()返回文件指针当前位置,返回一个长整型long

read 读函数

 
 
  1. # encoding: UTF-8
  2. # Author:SXQ
  3. # E-mail: lvhuijia@gmail.com
  4. # 2.txt格式
  5. '''
  6. 0 80D3 5 1988
  7. 1 80D4 5 1111
  8. 2 8060 4 122
  9. 3 80BA 6 1223
  10. 4 8067 4 13451
  11. '''
  12. file_name = r'C:\Users\xshi\Desktop\2.txt'
  13. obj = open(file_name, 'r+')
  14. # 打开文件时,指针指在文件的开头;
  15. # 当有读取操作的时候,指针往下移;
  16. # 当指针移到最后时,无法进行读操作,读操作不会失败,返回空;
  17. print obj
  18. print type(obj)
  19. obj.close()
  20. # EXP:
  21. #一次读取全部的文件内容
  22. #当前指针位置到文件最后
  23. #存储为str
  24. print 'read()'
  25. obj = open(file_name, 'r+')
  26. str = obj.read()
  27. print str
  28. print type(str)
  29. obj.close()
  30. #读取一行
  31. #存储为str
  32. print 'readline()'
  33. obj = open(file_name, 'r+')
  34. str = obj.readline()
  35. print str
  36. print type(str)
  37. obj.close()
  38. #一次性读取所有文件内容
  39. #存储为list
  40. print 'readlines()'
  41. obj = open(file_name, 'r+')
  42. str = obj.readlines()
  43. # lineList = list(obj)同上一行
  44. print str
  45. print type(str)
  46. obj.close()
  47. #######################################################
  48. print '华丽的分割线'
  49. print '#############################################'
  50. #读取文件10个字节
  51. print 'read(10)'
  52. obj = open(file_name, 'r+')
  53. str = obj.read(10)
  54. print str
  55. print type(str)
  56. obj.close()
  57. #对文件对象进行for循环
  58. obj = open(file_name, 'r+')
  59. for line in obj:
  60. print line
  61. print type(line)
  62. #返回str
  63. obj.close()
  64. #对文件对象readlines()进行for循环
  65. obj = open(file_name, 'r+')
  66. for line in obj.readlines():
  67. print line
  68. print type(line)
  69. #返回str
  70. obj.close()

seek 读指针移动函数

seek(offset,where): where=0从起始位置移动,1从当前位置移动,2从结束位置移动

  • f.seek(p,0) 移动当文件第p个字节处,绝对位置
  • f.seek(p,1) 移动到相对于当前位置之后的p个字节
  • f.seek(p,2) 移动到相对文章尾之前的p个字节
 
 
  1. # encoding: UTF-8
  2. # Author:SXQ
  3. # E-mail: lvhuijia@gmail.com
  4. # 2.txt格式
  5. '''
  6. 0 80D3 5 1988
  7. 1 80D4 5 1111
  8. 2 8060 4 122
  9. 3 80BA 6 1223
  10. 4 8067 4 13451
  11. '''
  12. file_name = r'C:\Users\xshi\Desktop\2.txt'
  13. obj = open(file_name, 'r+')
  14. str = obj.read()
  15. print str
  16. obj.seek(0,0)
  17. str1 = obj.read()
  18. print str1
  19. obj.close()

tell返回当前读指针位置

 
 
  1. # encoding: UTF-8
  2. # Author:SXQ
  3. # E-mail: lvhuijia@gmail.com
  4. # 2.txt格式
  5. '''
  6. 0 80D3 5 1988
  7. 1 80D4 5 1111
  8. 2 8060 4 122
  9. 3 80BA 6 1223
  10. 4 8067 4 13451
  11. '''
  12. file_name = r'C:\Users\xshi\Desktop\2.txt'
  13. obj = open(file_name, 'r+')
  14. str = obj.read(10)
  15. x = obj.tell()
  16. print type(x)
  17. print x
  18. print str
  19. obj.close()

3. write 函数

  • obj.write()

    obj.write(str), str必须为一字符串
    无返回值

  • obj.writelines()

    obj.writelines(list1),list1必须为一序列(list,tuple,dict),且序列内元素必须是字符串
    无返回值

 
 
  1. # encoding: UTF-8
  2. # Author:SXQ
  3. # E-mail: lvhuijia@gmail.com
  4. file_name_new = r'C:\Users\xshi\Desktop\3.txt'
  5. obj = open(file_name_new, 'r+')
  6. print '文件名字为:', obj.name
  7. # obj.write(str), str必须为一字符串
  8. # 无返回值
  9. str = '111111111111,2222'
  10. print obj.write(str)
  11. # obj.writelines(list1),list1必须为一序列,且序列内元素必须是字符串
  12. # 无返回值
  13. list1 = ['\n''22\n','2','shit','chi']
  14. print obj.writelines(list1)
  15. obj.close()




转载于:https://www.cnblogs.com/lshconfigure/p/5861804.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值