美文网首页
python读写文件2020-04-27

python读写文件2020-04-27

作者: swagsmile | 来源:发表于2020-04-27 21:59 被阅读0次

    python 读写文件!!!
    https://www.cnblogs.com/programer-xinmu78/p/10661170.html

    python 使用open()打开文件,有几种不同的模式,r,w,a,b,等。
    Python引入了with语句来自动帮我们调用close()方法:

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

    print(f.read())
    

    python文件对象提供了三个"读"方法:进行文件的读有三种方式,read(),readlines(),readline()
    readlines()会把文档按行读取,形成列表,末尾为换行符。
    这三种方法是把每行末尾的'\n'也读进来了,它并不会默认的把'\n'去掉,需要我们手动去掉。

    In[2]: with open('test1.txt', 'r') as f1:

            list1 = f1.readlines()
    

    In[3]: list1

    Out[3]: ['111\n', '222\n', '333\n', '444\n', '555\n', '666\n']

    去掉'\n'

    In[4]: with open('test1.txt', 'r') as f1:

            list1 = f1.readlines()
    
            for i in range(0, len(list1)):
    
                list1[i] = list1[i].rstrip('\n')
    

    In[5]: list1

    Out[5]: ['111', '222', '333', '444', '555', '666']

    关于open()的mode参数:

    'r':读

    'w':写

    'a':追加

    'r+' == r+w(可读可写,文件若不存在就报错(IOError))

    'w+' == w+r(可读可写,文件若不存在就创建)

    'a+' ==a+r(可追加可写,文件若不存在就创建)

    对应的,如果是二进制文件,就都加一个b就好啦:

    'rb'  'wb'  'ab'  'rb+'  'wb+'  'ab+'

    'w'这个模式是酱紫:如果没有这个文件,就创建一个;如果有,那么就会先把原文件的内容清空再写入新的东西。所以若不想清空原来的内容而是直接在后面追加新的内容,就用'a'这个模式。

    我们可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险:
    with open('test.txt', 'w') as f:
    f.write('Hello, world!')

    python文件对象提供了两个"写"方法: write() 和 writelines()。

    write()方法和read()、readline()方法对应,是将字符串写入到文件中。
    writelines()方法和readlines()方法对应,也是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。

    f1 = open('test1.txt', 'w')
    f1.writelines(["1", "2", "3"])

    此时test1.txt的内容为:123

    f1 = open('test1.txt', 'w')

    f1.writelines(["1\n", "2\n", "3\n"])

    此时test1.txt的内容为:

    1

    2

    3

    字符编码

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

    f = open('test.txt', 'r', encoding='gbk')

    f.read()

    '测试'

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

    f = open('test.txt', 'r', encoding='gbk', errors='ignore')

    相关文章

      网友评论

          本文标题:python读写文件2020-04-27

          本文链接:https://www.haomeiwen.com/subject/fodpwhtx.html