文件操作

f1 = open(r'd:\王凯.txt', encoding='utf-8', mode='r')
content = f1.read()
print(content, type(content))
f1.close()

操作过程:

open()内置函数,操作文件
f1 文件句柄 f1,fh,file_handle,f....
f1.close()
打开文件产生文件句柄。
对文件句柄进行相应的操作(读,写,追加,读写....)。
关闭文件句柄。

1.1读:
r
# 第一种 read() 全部读取
f1 = open('alex与sb', encoding='utf-8')
content = f1.read()
print(content, type(content))
f1.close()

 

# 第二种 read(n)  r:模式 按照 字符去读取
f1 = open('alex与sb', encoding='utf-8')
content = f1.read(3)
print(content)
f1.close()

 

# 第三种 readline() 按行读取
f1 = open('alex与sb', encoding='utf-8')
print(f1.readline().strip())
print(f1.readline().strip())
print(f1.readline().strip())
print(f1.readline().strip())
f1.close()
print(666)

# 第四种 readlines() 返回一个列表,列表中的每个元素是原文件的一行
f1 = open('alex与sb', encoding='utf-8')
content = f1.readlines()
print(content, type(content))
f1.close()

# 第五种 for循环   *** 推荐使用
f1 = open('alex与sb', encoding='utf-8')
for line in f1:
    print(line.strip())
f1.close()

 

rb   #专门用来读图片或者视频
先来一个图片比如起名:有点大.jpg
f1 = open('有点大.jpg', mode='rb')
content = f1.read()
print(content)

f2 = open('不大呀.jpg',mode='wb')
f2.write(content)
f1.close()
f2.close()

执行完之后:出来了

r+ 先读后写(后追加)
log3内容为

f1 = open('log3', encoding='utf-8', mode='r+')
content = f1.read()
print(content)
f1.write('666')
f1.write('来了')
print(f1.read())
f1.close()

执行完查看

1.2 写

w
# 1,没有文件创建文件写入内容。
# 2,有文件先清空后写入。
f1 = open('log1', encoding='utf-8',mode='w')
f1.write('又好了....')
f1.close()

查看log1

# wb 上面有代码

1.3 a 追加
# 1,没有文件创建文件写入内容。
# 2,有文件直接在后面追加。
f1 = open('log3', encoding='utf-8',mode='a')
f1.write('\n喇叭坏了 fuck')
f1.close()

 

二、文件操作的常用方法
# readable() 是否可读 
# writable() 是否可写

f1 = open('log1', encoding='utf-8',mode='w') f1.write('又好了....') if f1.readable(): print(f1.read()) # print(f1.readable()) f1.close()
# tell() 告诉你光标的位置(按照字节)
# seek() 调整光标的位置(按照字节)
f1 = open('alex与sb', encoding='utf-8')
content = f1.read(3)   #3是指读了3个字符 如果是()是指的读的全部字符
print(f1.tell())   #读了3个字符,也就是 太白金 三个字,那就是9个字节,所以结果是9
f1.close()

f1 = open('alex与sb', encoding='utf-8')
f1.seek(12)     #12是指按照12个字节计算的话,是4个文字,所以 太白金星 4个字就没有了
content = f1.read()
print(content)   
f1.close()

修改一个文件的过程:

1,以读的模式打开原文件
2,以写的模式打开一个新文件
3,对原文件的内容进行修改,形成新内容写入新文件
4,删除原文件
5,将新文件重命名为原文件。

练习题:

2,有如下文件:

-------

alex是老男孩python发起人,创建人。

alex其实是人妖。

谁说alex是sb?

你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。

----------

将文件中所有的alex都替换成大写的SB。

 

# read() 占用内存

import os #调用系统模块 with open('alex美文', encoding='utf-8') as f1, open('alex美文.bak',encoding='utf-8',mode='w') as f2: #1,以读的模式打开原文件alex美文 2,以写的模式打开一个新文件alex美文.bak old_content = f1.read() new_contenet = old_content.replace('SB', 'alex') #3,对原文件的内容进行修改,形成新内容写入新文件 f2.write(new_contenet) os.remove('alex美文') #4,删除原文件 os.rename('alex美文.bak','alex美文') # 5,将新文件重命名为原文件。 #但是上面的这个是把文件全读下面,不太好,我们推荐使用下面的for循环方式。 import os #调用系统模块 with open('alex美文', encoding='utf-8') as f1, open('alex美文.bak',encoding='utf-8',mode='w') as f2: #1,以读的模式打开原文件alex美文 2,以写的模式打开一个新文件alex美文.bak for line in f1: #for循环 new_line = line.replace('alex','SB') #把alex替换成SB #3,对原文件的内容进行修改,形成新内容写入新文件 f2.write(new_line) os.remove('alex美文') #4,删除原文件 os.rename('alex美文.bak','alex美文') # 5,将新文件重命名为原文件。

 


posted @ 2018-10-29 18:58  小菜鸟111  阅读(142)  评论(0编辑  收藏  举报