file的基本操作;file的修改

file的基本操作

# Author:nadech
# 文件读写/修改/
#data = open("yesterday",encoding="utf-8").read()
#这里要设置打开模式,默认是读r;
#w的时候会打开文件,把之前文件覆盖;
#a模式,append追加
import  sys,time

f = open("yesterday","r",encoding="utf-8")#f叫文件句柄,它包含了文件的名称,文件的大小,文件内存的起始位置等

#改变文件句柄的指针位置
print(f.readline())
print(f.tell())
f.seek(0)
print(f.readline())
#编码方式
print(f.encoding)
#操作系统给该文件句柄分配的编号
print(f.fileno())
# flush(),文件在执行写操作时,并不是实时写入到硬盘中的,而是当内存中缓存到一定数量之后写入,但是有些数据要求实时写入就可以用flush()强制写入

data = f.read()
print(data)

f.write("\n 我爱北京天安门,\n")
f.write("\n 你是一个大傻逼。")

print(f.readline())
print(f.readline())

#readlines只适合读小文件
for line in f.readlines():
    print(line.strip())

#只读5行
for index,line in enumerate(f.readlines()):
    print("%s:"%(index),line)

# 以上读文件的方法都可以忘记,因为上边的效率很低
# 这个方法是读入内存中一行,执行一行,而不是所有的都读到内存中
# 但是这个需要自己加一个计数器

count = 0
for line in f:
    if count == 9:
        print("——————我是分割线——————")
        count+=1

    print(line.strip())
    count+=1
for i in range(20):
    sys.stdout.write("#")
    sys.stdout.flush()
    time.sleep(0.2)
#truncate(),截断,里边的数字是从头剩下的字符数
f.truncate()


#读写,可以读,可以写,写在后边
f1 = open("yesterday2","r+",encoding="utf-8")

print(f1.readline())
print(f1.readline())
print(f1.readline())

f1.write("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
f1.write("gkukhkhkhkhkh")
#写读 w+
#追加读 a+,这两个模式不怎么使用

#rb,用来读二进制文件,但是并不是看到的01010101,是文件按照二进制处理(网络传输ftp,socket;视频文件,音频文件)
# f = open("yesterday","rb")
#wb,二进制的写

#with语句

#with open("yesterday","r",encoding="utf-8") as f:
#同时打开多个文件0
# with open("yesterday","r",encoding="utf-8"),\
#         open("yesterday","r",encoding="utf-8")

file的修改并不是直接在源文件中进行修改,而是新建文件,将要修改的内容修改掉

# Author:nadech

f = open("yesterday","r",encoding="utf-8")
f_new = open("yesterday_back","w",encoding="utf-8")

for line in f:
    if "令我笑容满面" in line:
        line = line.replace("令我笑容满面","令nadech笑容满面")
    f_new.write(line)

 

posted @ 2017-10-14 13:05  nadech  阅读(603)  评论(0编辑  收藏  举报