zoukankan      html  css  js  c++  java
  • python自动化测试-D4-学习笔记之一(文件读写补充)

    f = open('课堂练习.txt','w',encoding='utf-8')

    names = ['sherry','nacy','jason']

    如果需要把每个都写入进去,用write的话,需要用for循环才能写进去,
    如果用writelines的话会直接写入,也就是说,writelines内部给做个循环写入了。如下:
    如果写一个字符串的话,用write一下子写入进去,所以效率高,因为用writelines的话会把字符串一个一个的字母循环写入,效率低。

    for name in names:
    f.write(name)

    f.writelines(names)

    写入之后,打开文件发现没有写入成功的问题:原因是写文件的时候,先写入到内存的缓冲区,当缓冲区满了之后才会写入到磁盘里。
    f.flush()#写入文件后,立即把缓冲区里的内容写到磁盘里


    with 不需要自己关闭文件了,with 可以打开多个文件,as +文件名后面加逗号即可
    with open('课堂练习.txt','w',encoding='utf-8') as f,open('课堂练习1.txt','w',encoding='utf-8') as f1:
    f.write('Cindy')

    rb,wb,ab 图片,视频,音频等文件是二进制的东西,打开方式需要加上b,b意思是bytes,以二进制类型打开

    写代码从网上获取图片
    import requests
    url ='http://e.hiphotos.baidu.com/image/pic/item/b03533fa828ba61eac1f59ef4834970a314e5978.jpg'
    img =requests.get(url).content
    f = open('img.jpg','wb')
    f.write(img)

    文件内容替换:简单粗暴的方法就是:读出来然后字符串替换
    with open('geci.txt','a+',encoding='utf-8') as f:
    f.seek(0)
    all = f.read() #读完文件,指针在最后了
    new_all=all.replace('一','二') #字符串是不能修改的,所以要赋值给一个新的变量
    f.seek(0)
    f.truncate()#清空
    f.write(new_all)
    f.flush()

    高效的处理办法:读一行处理一行
    import os
    with open('geci.txt','a+',encoding='utf-8') as f,open('.geci.bak','a+',encoding='utf-8') as f2:# geci.bak前面加.是隐藏文件
    f.seek(0)
    for line in f:
    new_line= line.replace('歌','ge')
    f2.write(new_line)
    os.remove('geci.txt') #删除原文件
    os.rename('.geci.bak','geci.txt') #改名字
  • 相关阅读:
    python生成xml文件
    gcc基本用法
    Java删除文件或目录及目录下所有文件
    QTimer在QThread环境中失效的问题
    fopen打开文件失败的问题
    利用枚举,简化多个标志位统计
    QTableView表格自动拉伸
    django1.11 启动错误:Generator expression must be parenthesized
    css选择器
    property使用
  • 原文地址:https://www.cnblogs.com/blackbird0423/p/8275561.html
Copyright © 2011-2022 走看看