1, open(‘file’, mode)

第一个参数是包含文件名的字符串。第二个参数是另一个字符串,其中包含一些描述文件使用方式的字符。mode 可以是 ‘r’,表示文件只能读取,‘w’ 表示只能写入(已存在的同名文件会被删除),还有 'a’表示打开文件以追加内容;任何写入的数据会自动添加到文件的末尾。‘r+’ 表示打开文件进行读写。mode 参数是可选的;省略时默认为 ‘r’。

open(file, mode=‘r’, buffering=-1, encoding=None, errors=None,newline=None, closefd=True, opener=None)

mode的参数如下,如果b(二进制)模式,打开文本会报错

2, with 关键字。

  • 可以在语句结束后,关闭文件流。不用with关键字,文件会被python垃圾回收关闭。
with open('file') as f:read_data = f.read()
f.closed # True file关闭了

不用with,记得f.close()

3, 文件对象的方法

  • 读取的方法
 a,f.read([size]) size 为字符个数b,f.readline() 读取一行c,遍历读取所有行,与源文件格式相同for r in f:print(r, end=' ')d,读取的文件以列表的形式返回f.readlines() 或者 list(f)
  • 写入的方法
    f.write(string) 返回写入文件字符串的个数, 这会覆盖掉原理的文件内容,慎用。
    在写入其它对象(列表,元组),先转换为字符串
 >>> with open('F:/joy/2.txt', mode='w', encoding='utf-8') as f:...     tules = ('abc', 123)...     f.write(str(tules))...12
# 不带with的open
'''用f.flush() 刷新写入的字符
f.tell() 返回一个整数,给出文件对象在文件中的当前位置,表示为二进制模式下时从文件开始的字节数,以及文本模式下的意义不明的数字。
'''
  • f.seek(offset, whence)
    用f.seek(offset, whence),来确定文件的位置,f.read(1)来读取文件。
    whence 的 0 值表示从文件开头起算,1 表示使用当前文件位置,2 表示使用文件末尾作为参考点。 whence 如果省略则默认值为 0,即使用文件开头作为参考点。

  • 使用f.seek(offset, whence)可能的异常
    io.UnsupportedOperation: can’t do nonzero cur-relative seeks,没用以binary打开的文件offset非法。

def my_write(file_name: str):''' 只写模式,utf-8编码'''with open(file_name, mode='w', encoding='utf-8') as f:f.write('hello, my name is plus Lee.\nI am come from China')def my_read(file_name: str):''' 可读可写 b模式'''with open(file=file_name, mode='rb+') as f:print(f'{file_name} b模式下的文件内容是:{f.read()}')  print('当前文件位置:', f.seek(0, 1), '个字符串')print(f'从第{f.seek(0, 0)}个字符开始读,第1个字符是{f.read(1)}')print(f'设置现在位置为{f.seek(0, 0)}, 从当前位置偏移{f.seek(7, 1)}个位置后,字符为{f.readline()}')print(f'现在位置{f.tell()}, 最后一个位置{f.seek(0, 2)}, {f.readline()}')'''
这个my_read() 方法,f.seek(offset, whence) 从whence偏移offset单位长度
whence为0,从文件第一个开始读取
whence为1,从当前位置偏移offset个长度
whence为2,从最后位置偏移offset个长度
whence 为1,或者2时易错,要在b模式打开文件在文本文件(mode没以 b 模式打开的文件),
只允许相对于文件开头搜索(使用 seek(0, 2) 搜索到文件末尾是个例外)
并且唯一有效的 offset 值是从 f.tell() 中返回的或者是零。
其他 offset 值都会产生未定义的行为
'''# my_write('f:/joy/2.txt')
my_read('f:/joy/2.txt')'''
f:/joy/2.txt b模式下的文件内容是:b'hello, my name is plus Lee.\r\nI am come from China'
当前文件位置: 49 个字符串
从第0个字符开始读,第1个字符是b'h'
设置现在位置为0, 从当前位置偏移7个位置后,字符为b'my name is plus Lee.\r\n'
现在位置29, 最后一个位置49, b''
'''

最新文章

  1. 5、Scala模式匹配
  2. WebView你真的熟悉吗?看了才知道
  3. 如何去除 IDEA 中 xml 文件的屎黄色背景
  4. 野史杂谈,西游记令人崩溃的真相
  5. 在 Java CAPS 中使用 LDAP
  6. 在 xml 视图里指定 SAP UI5 VizType 实例
  7. 博士毕业的人也会交“智商税”?现实远比我们想象的残酷……
  8. javaone_JavaOne 2012:非阻塞数据结构如何工作?
  9. c++ char* 改变长度重新赋值_[C/C++] 2 :分析下列代码有什么问题?
  10. Hierarchical Softmax、CBOW词带模型抽象化及其公式推理以及python代码实现包括注释
  11. C# Dictionary键值对 创建,增加,删除,清空
  12. 宗海图cad_技术绘制论文,关于CAD技术机械制图关键技术相关参考文献资料-免费论文范文...
  13. 那些好用的 GIF 录制工具
  14. Android Unable to find source java class:<File>because it does not belong to any of the source dirs:
  15. JAVA怎么给扇形加边框_PS怎么制作扇形边框 扇面边框教程
  16. 【大话Mysql面试】-常见SQL语句书写
  17. IDC云灾备白皮书:云灾备支持未来业务持续性新需求
  18. CCNP学习之路之AAA详解(authentication、Authorization、Accounting)
  19. HP大中华区总裁孙振耀退休感言(上)
  20. mysql删除数据带in条件_mysql使用delete from where in 删除时报错如何解决

热门文章

  1. 设置启用树莓派的HDMI显示
  2. 解决el-select后台一次返回大数据量渲染慢导致页面卡顿的问题
  3. python一看就很厉害的代码_Python学习教程:怎么写出让人看起来就很舒服的代码?...
  4. c语言转换为python语言_python和c语言
  5. 【SR汇总】基于深度学习方法
  6. 将字符串中的字符按Z字形排列,按行输出
  7. Java通过cal.get(Calendar.MONTH)比真实月份少一个月
  8. delphi dxBarManager 的dxBarEdit 输入问题
  9. windows下安装和使用scrapy
  10. Tomcat 配置 login 和 gas