zoukankan      html  css  js  c++  java
  • Python之文件操作

    对文件进行操作:
    1、打开一个文件,得到一个文件句柄,赋值,给一个变量;
    2、通过句柄对文件进行操作;
    3.关闭文件

    现见如下文件如下:

    寒蝉凄切, 对长亭晚, 骤雨初歇。
    都门帐饮无绪, 留恋处, 兰舟催发。
    执手相看泪眼, 竟无语凝噎。
    念去去, 千里烟波, 暮霭沉沉楚天阔。
    多情自古伤离别, 更那堪, 冷落清秋节!
    今宵酒醒何处? 杨柳岸, 晓风残月。
    此去经年, 应是良辰好景虚设。
    便纵有千种风情, 更与何人说?


    读取如上的文件内容:


    f=open('雨霖铃',encoding='utf8')
    data=f.read()
    print(data)
    f.close()

    注意:open函数打开是通过操作系统打开文件的,win系统默认的编码是GBK编码,所以直接打开会乱码,所以需要转化到encoding='utf8',如果win的编码是
    gbk,就可以直接使用open打开了,


    文件打开模式:
    --------- ---------------------------------------------------------------
    'r' 读
    'w' 写,默认先清空文件
    'x' 创建一个新的文件,并且开启写的模式
    'a' 在文件的末尾添加内容
    'b' 二进制的模式
    't' 默认是txt的模式
    '+' 打开磁盘,在读和写的时候
    'U' 通用换行模式,(不建议使用)


    学习使用上述的模式:
    f=open('雨霖铃','r',encoding='utf8')
    data=f.read(5)
    data2=f.readlines()
    print(data)
    print(data2)

    例子2:

    f=open('雨霖铃','r',encoding='utf8')
    for line in f.readlines():
    print(line)


    例子3:
    在第三行后边加上:helloworld
    f=open('雨霖铃','r',encoding='utf8')
    number=0
    for line in f.readlines():
    number+=1
    if number==3:
    line=''.join([line.strip(),'helloworld'])
    print(line)

    知识点:
    tell()
    f=open('雨霖铃','r',encoding='utf8')
    number=0
    for line in f.readlines():
    number+=1
    if number==3:
    line=''.join([line.strip(),'helloworld'])
    print(line)

    print(f.tell())
    tell()就是告诉目前光标所在位置,一般英文字符按照一个算,中文按照3个算的;
    f.seek()就是把光标,至于初始的开始的位置;


    知识点2:
    在terminal上操作

    应用进度条:
    import sys,time
    for i in range(45):
    sys.stdout.write('*')
    sys.stdout.flush()
    time.sleep(0.1)


    f=open('雨霖铃','w',encoding='utf8')
    f.truncate(5)
    f.truncate()
    print(f.isatty())
    print(f.seekable())
    print(f.readable())
    f.close()


    f=open('雨霖铃2','w',encoding='utf8')
    f=open('雨霖铃2','a',encoding='utf8')

    f.write('hello')
    f.write(' 你好2 ')
    f.write('支架')
    f.close()


    r+,w+模式:
    f=open('雨霖铃2','r+',encoding='utf8')#以读写的模式打开文件
    print(f.read(5))#可读
    f.write('qiuqiu')
    print('---------------------------')
    print(f.read())


    f=open('雨霖铃2','w+',encoding='utf8')#以写读的模式打开文件
    print(f.read(5))#可读,但是什么都没有,因为w+只要执行就会先格式化了
    f.write('诺诺')
    print('---------------------------')
    print(f.read())#还是read不到,这时候要查看一下光标;
    print(f.tell())
    f.seek(0)#光标至为最初始化的状态
    print(f.read())


    w+与a+的区别在于是否在开始覆盖整个文件

    为了避免的打开文件忘了关闭使用with语句

    with open('雨霖铃2','r') as f:
    pass
    Python2.7之后,with又支持多个文件

    with open('xxx') as obj1, open('xxx2') as obj2:
    pass

  • 相关阅读:
    Java实现 LeetCode 400 第N个数字
    Java实现 LeetCode 400 第N个数字
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 398 随机数索引
    Java实现 LeetCode 398 随机数索引
    Java实现 LeetCode 398 随机数索引
    linux中的cd ..和cd -命令有什么区别?
    GCC使用
  • 原文地址:https://www.cnblogs.com/surewing/p/7355113.html
Copyright © 2011-2022 走看看