Python No.19_文件操作(增删改查)

# !/usr/bin/env python# -*- coding:utf-8 -*-# Author:Hugolinhj

'''对文件的操作流程1、打开文件、得到文件句柄并赋值给一个变量2、通过句柄对文件进行操作3、关闭文件''''''data = open('yesterday',encoding='utf-8').read()    #是指将内存复制到变量来修改,无意义,正常格式应该为以下#windows默认编码格式是GBK,py是utf-8,要用encoding指定'utf-8’打开。f = open('yesterday','r',encoding='utf-8')data = f.read()data2 = f.read()data2 = f.read()print(data)print('data2 ===>',data2)#这里不打因data2不是没有打印,而是文件的所读光标已经指到文件底部,没能在指会文件首部。

w = open('yesterday2','w',encoding='utf-8')#文件句柄,就是该文件的内存对象。包含文件名、字符集、大小、描述。规范:加'r'默认不加为读模式。注!!!:’w'直接创建空白文件。w.write('wo ai BeiJingTianAna\n')w.write('wo ai wulingmin')print(w)

a = open('yesterday3','a',encoding='utf-8')# 加'a'是append,追加的意思,不能读。a.write('wo ai BeiJingTianAna\n')a.write('wo ai wulingmin\n')print(a)

a.close()#关闭文件w.close()f.close()

f = open('yesterday','r',encoding='utf-8')for i in range(5):    print(f.readline())#读一行,用for 语句读5行

f = open('yesterday','r',encoding='utf-8')for index,line in enumerate(f.readlines()):#找下标 index。    if index ==  1:        print('------------------')        continue # 不操作,重新判断。    elif index == 11:        print('==================')        break #退出循环。    print(line.strip())#打印文件中跳过第2行以及到第12行退出。#注:readlines只能读小文件,不建议读大文件,因为是直接全部读取到内存中,占内存大。

#当想打印文件中的行数,建议采用以下方式:#标准:f = open('yesterday','r',encoding='utf-8')count = 0for line in f:   #这种是一行一行读取到内存,并一行一行从内存中删除。 使f变成迭代器。    if count == 9:        print('++++++++++++')        count += 1        continue    else:print(line)    count +=1#打印文件’yesterday',其中第10行,不打印。f.close()

'''

f = open('yesterday','r',encoding='utf-8')print(f.tell())#打印当前文件所打印的指针。print(f.read(5))#打印当前文件的前5个字符。’Yeste'print(f.readline())#打印当前文件的一行。’rday, all my troubles seemed so far away'print(f.tell())#打印当前文件所打印的指针。f.seek(0)#将指针指回0。print(f.readline())#打印当前文件的一行。#’Yesterday, all my troubles seemed so far away'

print(f.encoding)#打印文件字符编码

print(f.fileno())#打印操作系统内部接口的去读文件的编号。

print(f.name)#打印文件名

print(f.seekable())#判断文件是否为可移动指针。 原因:文件不能移动指针,如:终端、驱动等,因为在linux中一切皆为文件,但驱动文件等是无法移动指针的。

print(f.writable())#判断文件是否可读。

print(f.flush())#因为存硬盘前,会先让内存存到缓存,缓存满了后再放入硬盘。flush是及时放入硬盘。#例:import sys, timefor i in range(50):    sys.stdout.write("#")  # sys.stdout 打印不换行。    sys.stdout.flush()  # 及时打印。不放缓存条。    time.sleep(0.05)

print(f.closed)#判断文件是否被关闭。

f = open('yesterday2','a',encoding='utf-8')print(f.truncate(10))#截断文件'yesterday2’10个字符。

f = open('yesterday','r+',encoding='utf-8')#'r+'可读,和追加。读写print(f.readline())print(f.readline())print(f.readline())print(f.tell())#打印光标f.write('----------diao-----------') #追加是文件的最后。print(f.readline())#

f = open('yesterday','w+',encoding='utf-8') #'r+'可读,和追加。写读,会先创建一个文件,没什么用f.write('----------diao-----------') #追加是文件的最后。f.seek(10)f.write('----------diao-----------') #追加是文件的最后。

f = open('yesterday','rb') #rb是指二进制文件。二进制不能传encoding传输。当网络传输时用二进制。print(f.readline())

f = open('yesterday','wb') #rb是指二进制文件。二进制不能传encoding传输。当网络传输时用二进制。二进制写f.write('hello binary\n'.encode())
(0)

相关推荐