python基础-day06

文件操作的基本流程

#__author:"Jiang Hai"
#date:2018/6/19

# 文件基本操作流程
# 1、打开文件
# 2、操作文件
# 3、关闭文件

# open打开文件
# red中英文都是一个字符
# r、w只读和只写,不能相互交互
# 创建对象的时候文件会被清空,没有文件会创建文件
data = open('小重山','r',encoding='utf8').read()
print(data)

f = open('小重山','r',encoding='utf8')
data = f.read(5)
print(data)
f.close()

f = open('小重山','w',encoding='utf8')
f.write('Hello World')
f.close()

# 不会换行
f = open('小重山2','w',encoding='utf8')
f.write('Hello World2')
f.write('Hello World3')
f.close()


# 追加 'a'==append
f = open('小重山2','a',encoding='utf8')
f.write('Hello World2\n')
f.write('Hello World3')
f.close()

#按行取 redline单行,redlines多行
f = open('小重山2','r',encoding='utf8')
# print(f.readlines())
# print(f.readline())
# print(f.readline())
data = f.readlines()
f.close()
number = 0;
for i in data:
    number += 1
    # if number == 2:
    #     print(i.strip()+'fdasfdas')
    # else:
    #     print(i.strip())
    if number==2:
        i=''.join([i.strip(),'iiiii'])
    print(i.strip())

# 这个最好的方式
f = open('小重山2','r',encoding="utf8")
# 这是for内部将f对象做成一个迭代器,用一行取一行
for i in f:
    print(i.strip())
f.close()

#tell 光标位置 seek 移动光标位置
f = open('小重山2','r',encoding='utf8')
print(f.tell())
print(f.read(10))#一个中文占3个字符
print(f.tell())
f.seek(0)
print(f.tell())
f.close()

#flush (及时更新)缓存中的数据存到文件中  进度条
f = open("Hello",'w')
f.write("alex is 31")
f.write("Hello")
f.flush()
f.close()

import sys,time
# for i in range(30):
#     # sys.stdout.write("*")
#     # sys.stdout.flush()
#     print('*',end='',flush=True)
#     time.sleep(0.2)

#truncate 'a'是截断 ,'w'是清空内容,向后再截3个字符
f = open("Hello",'a',encoding='utf8')
f.truncate(3)
f.close()

# filenc

# readable 是否是可读可写的文件 返回True,False
f = open("Hello",'a',encoding='utf8')
print(f.readable())

# isatty 是不是一个终端 返回True,False
f = open("Hello",'a',encoding='utf8')
print(f.isatty())
f.close()

# 模式r+读写模式 (最后位置写,光标起始位置),w+写读模式(先清空,然后读),a+追加读模式(光标末尾位置)
f = open("Hello",'r+',encoding='utf8')
print(f.readline())
f.write(" jiang hai age 30")
f.seek(0)
print(f.readline())
f.close()

f = open("Hello",'w+',encoding='utf8')
print(f.readline())
f.write(" jiang hai age 30")
f.seek(0)
print(f.readline())
f.close()

f = open("Hello",'a+',encoding='utf8')
print(f.readline())
f.write(" jiang hai age 30")
f.write(" \n jiang hai age 30")
f.seek(0)
print(f.readline())
f.close()

# 终极问题 无法修改文件内容,原因:没有办法决定修改的位置。可以使用替换和备份创建文件。
f = open("Hello",'r+',encoding='utf8')
b = open("Hello2",'a+',encoding='utf8')
number = 0;
for line in f:
    number+=1
    if number == 2:
        b.write(''.join([line.strip(),'大好人']))
    else:
        b.write(line)
f.close()
b.close()

#with
# f = open("Hello",'r+',encoding='utf8')
# f.close()
# 等于上面的语句,with语句执行完成后自动执行close()语句
with open("log",'w') as f:
    f.write("1233213")

with open("log1",'w',encoding='utf8') as f,open("log2",'w',encoding='utf8') as b:
    f.write("fdsafdsf")
    b.write("fdsafdsaf")

猜你喜欢

转载自blog.csdn.net/JiangHai_CSDN/article/details/80731879