della0887 发表于 2018-8-11 12:01:07

python基础---文件处理

  文件处理
  f=open(‘文件’,’r’)         打开一个文件
  f.close()                关闭文件,相当于保存
  1、字符编码
  在文件处理过程中,首先有一个重要的概念,就是字符编码
  字符编码:把人类的字符编译成计算机能认识的数字
  字符编码表:就是一张字符与数字对应关系的表
  ascii
  gbk
  utf-8          (硬盘中常用编码)
  unicode       (内存中常用编码)
  unicode ---->encode(‘utf-8’) 编码----> bytes
  bytes ----> decode(‘utf-8’)解码 ----> Unicode
  原则:字符以什么格式编译的,就要以什么格式解码
  python3中的字符串分为两种
  x='egon'            默认存为unicode
  y=x.encode('utf-8')      使用encode编码为bytes
  python2中字符串也分为两种
  x=u'egon'            加u表示存为Unicode格式,与python3的字符串一样
  y='alex'               默认存为bytes
  2、文件模式
  r   文本模式的读,在文件不存在,不会创建新文件
  w   文本模式的写,文件存在则清空,不存在则创建
  a      文本模式的追加,文件存在光标跳到文件末尾,文件不存在创建
  rb   即直接从硬盘中读取bytes
  wb   以二进制写模式打开
  ab   以二进制追加模式打开
  r+   读的时候可写
  w+   写的时候可读
  a+   追加时可读写
  a. r模式
  f.read()       #一次性读取文本中全部的内容,以字符串的形式返回结果
  read()的使用:
  read(3)       #文件打开方式为文本模式时,代表读取3个字符
  #文件打开方式为b模式时,代表读取3个字节
  #unicode格式中3个字节=1个字符
  控制光标的移动(都是以字节为单位):
  f.seek()      #控制光标移动几个字节
  有三种模式:
  0             从首字节开始
  1    b模式下运行,以当前光标所在的位置为参照物
  2    b模式下运行,以最后一个字节为参照物
  练习:模拟tail –faccess.log
# python3 tail.py -f access.log  
import time
  
import sys
  

  
with open(r'%s' % sys.argv, 'rb') as f:
  
    f.seek(0, 2)
  

  
    while True:
  
      line = f.readline()
  
      if line:
  
            print(line.decode('utf-8'),end='')
  
      else:
  
            time.sleep(0.2)
  truncate()    #文件的打开方式为可写,从文件开头开始截取,留下指定字节之后的字节
  f.readline()       #只读取文本第一行的内容,以字符串的形式返回结果
  f.readlines()      #读取文本所有内容,并且以数列的格式返回结果,一般配合for in使用
  f.readble()      #判断文件是否有读的权限,返回布尔值
  b. w模式
  f.write()          #写入文件,换行需要手动写换行符\n
  f.writelines()         #一次写入多行
  c. a模式
  f.tell()            #查看光标位置
  with open(‘文件’,’w’,encoding=’utf-8’) as f:
  f.write(‘11111\n’)   #会把文件的内容赋值给f,执行完毕会自动close
  python中把脚本后的参数传入脚本内的方法:
  import sys
  print(sys.argv)
  一个cp文件的python小脚本
import sys  

  
#python3 copy.py source.file target.file
  
if len(sys.argv) < 3:
  
    print('Usage:python3 copy.py source.file target.file')
  
    sys.exit()
  

  
#r'C:\Users\Administrator\PycharmProjects\python18期周末班\day3\test.jpg'
  
with open(r'%s' %sys.argv,'rb') as read_f,\
  
      open(r'%s' %sys.argv,'wb') as write_f:
  

  
    for line in read_f:
  
      write_f.write(line)
页: [1]
查看完整版本: python基础---文件处理