zoukankan      html  css  js  c++  java
  • 25. 读写文件

    1、读文件

    1. 以读文件的模式打开一个文件对象,使用python内置的open()函数
    >>> f = open('/Users/michael/test.txt', 'r')
    
    1. 如果文件不存在,open()函数就会抛出一个IOError的错误,并给出错误码和详细的信息
    >>> f=open('/Users/michael/notfound.txt', 'r')
    Traceback (most recent call last):
    	File "<stdin>", line 1, in <module>
    FileNotFoundError: [Errno 2] No such file or directory: '/Users/michael/notfound.txt'
    
    1. 如果文件打开成功,调用read()方法一次读取文件的全部内容
    >>> f.read()
    'Hello, world!'
    
    1. 最后调用close()方法关闭文件。
    >>> f.close()
    
    1. 由于文件读写时都可能产生IOError,一旦出错,f.close()就不会调用。所以,为了保证无论文件是否出错都能正确关闭文件,我们使用try ... finally来实现:
    try:
    	f = open('/path/to/file', 'r' )
    	print(f.read())
    finally:
        if f:
            f.close()
    

    但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

    with open('/path/to/file', 'r') as f:
    	print(f.read())
    

    这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

    1. 如果文件很小,read()一次性读取方便,则反复调用read(size)保险,如果时配置文件,调用readlines()最方便:
    for line in f.readlines():
    	print(line.strip()) # 把末尾的'
    '删掉
    

    字符编码

    ​ 要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数;

    例如,读取GBK编码的文件:

    >>> f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')
    >>> f.read()
    '测试'
    

    ​ 遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:

    >>> f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
    

    2、写文件

    ​ 写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符‘w'或者‘wb’表示写文本文件或写二进制文件:

    >>> f = open('/Users/michael/test.txt', 'w')
    >>> f.write('Hello, world!')
    >>> f.close()
    

    ​ 务必调用f.close()来关闭文件,当写入文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存中,空闲时再慢慢写入。

    ​ 忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险:

    with open('/Users/michael/test.txt', 'w') as f:
    	f.write('Hello, world!')
    
  • 相关阅读:
    paip.调用GUI接口.
    paip.按键替换映射总结
    paip.IIS 7.5 应用程序池,应用程序以及虚拟目录的存储位置
    paip.android 手机输入法制造大法
    paip.设置鼠标灵敏度API
    paip.系统无法在消息文件中为 Application 找到消息号为 0x2350 的消息文本。服务器存储空间不足,无法处理此命令
    paip.DEVSUIT WEB .NET ASPX网站打开慢的原因
    paip.动画透明淡入淡出窗口之重绘性能
    PAIP。JS调用DLL的解决方案
    paip.输入法编程四级非常用汉字汉字1000个
  • 原文地址:https://www.cnblogs.com/BigMario/p/13577894.html
Copyright © 2011-2022 走看看