Python----文件操作

#文件操作:
# 路径:绝对路径:从根目录开始一直找到文件。
# 相对路径:从当前目录开始找到的文件。
# r , w , a ,
# 读模式:
# *r
# read
# read(n)
# readline()
# readline()
# for循环 最好的
# rb
# *r+
# r+b
# 写模式:
# *w
# w:没有文件, 创建文件写内容:
# w:如果有文件,清空原文件,写入新内容.
# wb
# w+
# w+b
# 追加模式
# *a
# a:没有文件,创建文件写内容
# a:如果有文件, 在最后面追加新内容:
# ab
# a+
# a+b
# 补充:
# gbk utf_8
# 对于字母,数字,特殊字符的编码都是引用asscii码,所以可以直接转化.
# s1='123abc*'
# b1=s1.encode('utf_8')
# s2=b1.decode('gbk')
# print(s2)
# f1=open('d:\护士空姐学生少妇联系方式.txt',encoding='utf-8',mode='r')
# print(f1.read())
# f1.close()
'''
变量:f1_obj ,f1_file ,file ,file_handle...文件句柄.
open Python的内置函数,但是底层调用的Windows系统的open功能,
open功能就是操作文件用的.
windows系统默认的编码方式gbk ,linux ,macos:utf-8
流程:1.打开文件,产生文件句柄.
2.对文件句柄进行相应的操作.
3.关闭文件
'''
# f2=open('护士学生空姐班主任.txt',encoding='utf-8')
# print(f2.read())
# f2.close()

# r rb
# 1, f.read()全部读出来:
# f2=open('护士学生空姐少妇班主任.txt',encoding='utf-8')
# print(f2.read())
# f2.close()

# 2 f.read(n)

# f1=open('护士学生空姐少妇班主任.txt',encoding='utf-8')
# print(f1.read(3))
# f1.close()
# r模式:read(n) n 是按照字符读取.
# rb模式:read(n) n 是按照字节读取.

#readline ()按行读取
# f1=open('护士学生空姐班主任.txt',encoding='utf-8')
# print(f1.readline())
# print(f1.readline())
# print(f1.readline())
# print(f1.readline())
# f1.close()

# readlines() 返回一个list,里面的元素是每一行.
# f1=open('护士学生空姐班主任.txt',encoding='utf-8')
# print(f1.readlines())
# for line in f1.readlines():
# print(line)
# f1.close()

#for 循环去读取.
# f1=open('护士学生空姐班主任.txt',encoding='utf-8')
# for line in f1: #一行一行循环打印
# print(line)
# f1.close()

#rb 模式 非文字类的文件
# f1=open('护士学生空姐班主任.txt',mode='rb')
# print(f1.read(3)) #:按照字节读取的
# f1.close()

#r+ 读写,先读后写

# f1=open('护士学生空姐班主任.txt',encoding='utf-8',mode='r+')
# print(f1.read())
# f1.write('666')
# f1.close()

#r+b 读写,先读后写
# f1=open('护士学生空姐班主任.txt',mode='r+b')
# print(f1.read())
# f1.write('666'.encode('utf-8'))
# f1.close()

# w wb 模式
# w:没有文件,创建文件写内容.
# w:如果有文件,清空原文件,写入新内容.
# f1=open('log5',encoding='utf-8',mode='w')
# f1.write('老男孩是最好的培训学校...')
# f1.close()

# f1=open('log1',encoding='utf-8',mode='w')
# f1.write('法国进口分类结果')
# f1.close()

#wb #b代表batys类型
# f1=open('log2',mode='wb')
# f1.write('你好伟大的祖国'.encode('utf-8'))
# f1.close()

#w+ 先写后读
# f1=open('log1',encoding='utf-8',mode='w+')
# f1.write('老老男孩......ha哈哈哈')
# f1.seek(0) #调整光标
# print(f1.read())
# f1.close()

#w+b
#a ab
#a:没有文件,创建文件写内容.
#a+:有文件,直接在原文件的后面追加新内容.

# f1=open('log3',encoding='utf-8',mode='a')
# f1.write('barry')
# f1.close()

#a+ 追加可读
# f1=open('log3',encoding='utf-8',mode='a+')
# f1.write('建设大街机会多吃口饭')
# f1.seek(0)
# print(f1.read())
# f1.close()


# f1=open('log3',mode='ab')
# f1.write('中国'.encode('gbk'))
# f1.close()


#ps 非文字的文件的读取写入
# f1=open('l1.jpg',mode='rb')
# co.close()
# f2=openntent=f1.read()
# print(content)
# f1('小猪佩奇.jpg',mode='wb')
# f2.write(content)

#read write read(n) readline() readlines() seed
# readlable() writeable()判断是否可读或者可写
# f1=open('log1',encoding='utf-8')
# print(f1.writable())
# f1=open('log1',encoding='utf-8',mode='r+')
# print(f1.readable())
# print(f1.writable())

# seek: 按照字节去调整光标
# f1=open('log1',encoding='utf-8')
# f1.seek(3)
# print(f1.read())
# f1.close()
# tell 告诉光标的位置
# f1=open('log1',encoding='utf-8')
# print(f1.tell())
# print(f1.read())
# print(f1.tell())
# f1.close()
#truncate 对原文件进行截取内容,以字节形式,只能在a模式下使用。
# f1=open('log1',encoding='utf-8',mode='a')
# f1.truncate(2)
# f1.close()

#文件操作的另一种写法
# with open() as 不用主动关闭 f1.close()
# 同一open 可以操作多个文件
# with open('log1',encoding='utf-8')as f1:
# print(f1.read())
# with open('log1',encoding='utf-8')as f1,\
# open('log2',encoding='utf-8',mode='w')as f2:
# print(f1.read())
# f2.write('666')
# with open('log1',encoding='utf-8')as f1:
# content=f1.read()
# f1.close()
# pass
# with open('log1',encoding='utf-8',mode='w')as f2:
# f2.write('333')

#文件对的改

'''
1,打开原文件 old_file,将原内容读取到内存。
2,创建一个新文件new_file。
3,将原内容通过你改写形成新内容,写入到新文件。
4,将原文件删除。
5,将新文件重命名成原文件。
'''
#方法一,原文件内容不大,可以用此方法,但是此方法还是很low。
import os
with open('change',encoding='utf-8')as f1,\
open('change.bak',encoding='utf-8',mode='w')as f2:
old_content=f1.read()
new_content=old_content.replace('alex','SB')
f2.write(new_content)
os.remove('change')
os.renames('change.bak','change')

#方法二2
import os
with open('change',encoding='utf-8')as f1,\
open('change.bak',encoding='utf-8',mode='w') as f2:
for lion in f1:
new_line=lion.replace('SB','alex')
f2.write(new_line)
os.remove('change')
os.rename('change.bak','change')


































猜你喜欢

转载自www.cnblogs.com/weilaixiaochaoren/p/9014498.html