zoukankan      html  css  js  c++  java
  • Python基础之文件处理

    一、常用操作

    1.打开文件 open()  

    f=open('a.txt')
    print(f) #----------------------> <_io.TextIOWrapper name='a.txt' mode='r' encoding='cp936'>

     其中a.txt 是相对路径,如果想用绝对路径打开文件,要在文件名前加一个‘r’,否则就要把‘’改成‘\’

    打开文件时有个问题,就是字符编码的问题。如果不指定打开编码,默认使用操作系统的编码,Windows是GBK

    可以在这里查看文件编码方式,使用什么编码保存的文件,就要用什么编码打开文件,可以在open()文件时指定打开的编码方式

    写成这样:f=open('a.txt',encoding='utf-8')

    还有一个问题就是,这种打开文件的方式会把整个文件读到内存中,如果文件很大的话,内存可能就会被占满了,可以用for line in f的方式

    打开文件后,就可以操作文件了,如读文件f.read(),注意最后一定要关闭文件f.close()

    2.文件的打开模式

    f=open(文件路径,模式)

    打开文件的模式有:

    • r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
    • w,只写模式【不可读;不存在则创建;存在则清空内容】
    • x, 只写模式【不可读;不存在则创建,存在则报错】
    • a, 追加模式【可读;   不存在则创建;存在则只追加内容】

    "+" 表示可以同时读写某个文件

    • r+, 读写【可读,可写】
    • w+,写读【可读,可写】
    • x+ ,写读【可读,可写】
    • a+, 写读【可读,可写】

     "b"表示以字节的方式操作

    • rb  或 r+b
    • wb 或 w+b
    • xb 或 w+b
    • ab 或 a+b         #以字节的方式操作不会有乱码,也不用转码

    3.print(f.readline())   打印文件第一行

    4.print(f.readlines())   将文件以列表的形式打印

    5.按读的方式打开文件并不能操作文件,只有以写的方式打开文件才能进行写操作

      f.open('a.txt','w',encoding='utf-8')    

     如果文件存在,先把原文件内容删除,再写

     如果文件不存在,则新建一个文件,在写

       在进行写操作是注意,文件中都是字符串类型,要带着引号,也可以以列表的形式写,当然列表的每个元素也必须是字符串  

    f=open('a.txt','w',encoding='utf-8')
    f.write('123413 ') # 代表换行
    f.write(['123 ','hello '])
    f.close()    #注意最后一定要关闭文件

    二、其他方法

    f=open('a.txt','w',encoding='utf-8')
    f.flush() #写完后立即刷到硬盘上

    print(f.close()) #查看文件是否为关闭状态

    print(f.encoding) #查看编码方式

    print(f.name) #查看文件名

    print(f.readable()) #查看是否可读

    print(f.wirteable()) #查看是否可写

    print(f.read()) #括号里可以指定数字,只有read()里的数字是以字符为单位,
    # 其余的文件内光标移动如seek,tell,truncate都是以字节为单位

    print(f.seek(2)) #seek是以字节为移动单位,但是汉字在utf-8中是以三个字节为单位的,所以如果是seek(2) 就会报错

    print(f.tell()) #告诉当前光标位置

    f.truncate(3) #截断,从0到3后面的删除,注意一定要是写操作才行

    三、二进制的方式复制文件

     以一张图片a.jpg为例,复制一份

    read_file=open('a.jpg','rb')
    write_file=open('a.copy.jpg','wb')
    write_file.write(read_file.read())

    四、文件修改

    #修改文件a.txt中'hello'为'hi'
    import os #导入os模块
    with open('a.txt','r',encoding='utf-8') as read_f,    #用with语句可以很方便的进行上下文处理,可以自动关闭操作的文件
    open('.a.txt.swp','w',encoding='utf-8') as write_f: #新建一个临时文件
    for line in read_f:
    if 'hello' in line:
    line=line.replace('hello','hi')
    write_f.write(line)
    os.remove('a.txt')
    os.rename('.a.txt.swp','a.txt')
  • 相关阅读:
    小程序样式表不支持级联选择器
    小程序为什么脚本内不能使用window等对象
    微信小程序怎么获取用户输入
    php中不借助IDE快速定位行数或者方法定义的文件和位置
    百度Ueditor编辑器取消多图上传对话框中的图片搜索
    阿里云ECS购买优惠码
    DEDE 5.7中各函数所在的文件和位置
    自定义的parse_url逆向函数http_build_url,将数组转为url字符串
    PHPMailer fe v4.11 For Thinkphp 3.2
    javascript使用技巧总结,不断更新...
  • 原文地址:https://www.cnblogs.com/zhang-can/p/7004451.html
Copyright © 2011-2022 走看看