zoukankan      html  css  js  c++  java
  • 文件处理

    一.文件处理流程

      1.打开文件,得到文件语柄并赋值给一个变量

      2.通过语柄对文件进行操作

      3.关闭文件

    二.基本操作

      1文件操作基本流程:

    1 f = open('chenli.txt') #打开文件
    2 first_line = f.readline()
    3 print('first line:',first_line) #读一行
    4 print('我是分隔线'.center(50,'-'))
    5 data = f.read()# 读取剩下的所有内容,文件大时不要用
    6 print(data) #打印读取内容
    7  
    8 f.close() #关闭文件

      2.文件编码:

       #不指定打开编码,默认使用操作系统的编码,windows为gbk,linux为utf-8,与解释器编码无关

      3.文件打开模式

       1 文件句柄 = open('文件路径', '模式') 

      打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

      打开文件的模式有:

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

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

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

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

    • rb  或 r+b
    • wb 或 w+b
    • xb 或 w+b
    • ab 或 a+b

       注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

      4.文件内的光标移动

      read(3):

      1. 文件打开方式为文本模式时,代表读取3个字符

      2. 文件打开方式为b模式时,代表读取3个字节

      其余的文件内光标移动都是以字节为单位如seek,tell,truncate

      注意:

      1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

      2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

      5.上下文管理 

    1 with open('a.txt','w') as f:
    2     pass
    3 
    4 
    5 with open('a.txt','r') as read_f,open('b.txt','w') as write_f:
    6     data=read_f.read()
    7     write_f.write(data)

      6.文件的修改

     1 import os
     2 with open('a.txt','r',encoding='utf-8') as read_f,
     3         open('.a.txt.swap','w',encoding='utf-8') as write_f:
     4     for line in read_f:
     5         if line.startswith('hello'):
     6             line='哈哈哈
    '
     7         write_f.write(line)
     8 
     9 os.remove('a.txt')
    10 os.rename('.a.txt.swap','a.txt')

    .

  • 相关阅读:
    使用自制事务进行异常信息的记录:Autonomous transactionslog
    backup methodsexp and imp
    一个 SQL 同时验证帐号是否存在、密码是否正确
    使用存储过程进行分页:page by Procedure
    推荐一款类似于editplus的文本编辑工具:note++
    myeclipse8.5反编译插件的安装使用jdgui插件
    [转]JavaMail的使用之邮件发送 详解
    Thinking in java中内部类的例子。
    [转]tomcat6.0下的log4j日志文件配置过程
    127.X.X.X開頭的網路都是特殊用途的嗎!?
  • 原文地址:https://www.cnblogs.com/sxh-myblogs/p/7231087.html
Copyright © 2011-2022 走看看