分享

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

 Coder编程 2021-06-14
# !/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 = 0
for 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, time
for 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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多