文件操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。


#!/usr/bin/python
#-*-coding:utf-8 -*-

#######以读r的的方式打开文件:有则打开,没有则报错##########
# #打开文件
# f = open(‘aa.txt‘,encoding=‘utf-8‘,mode=‘r‘)
# print(f)
# #文件操作
# data = f.read()
# print(data)
# #关闭文件
# #f.close()
#
# print(‘=====================‘)
# #f.seek(0) #控制光标 ,seek0就是将光标移动到0的位置 这样再次打印就可以重新读到内容了
# data2 = f.read()
# print(data2) ##发现data2并没内容  这里涉及到光标的问题
#
# ##当read的时候,光标从0的位置开始,往下走,当读完后,光标到了文件的末尾
# #所以当第一次read的时候 光标已经到了文件的末尾,所以第二次read就读不到内容了

#f = open(‘aa.txt‘,encoding=‘utf-8‘,mode=‘r‘)

#print(f.readable()) 判断文件打开的mode是否是‘r‘
# print(f.readline(),end=‘‘) #读取第一行
# print(f.readline(),end=‘‘) #读取第二行
#每行中间有个换行符,要想去掉加end 这里去掉的是print自带的换行  print自带的
#如果只写print(f.readline(),end=‘‘) 每次读取都是第一行,不会每次执行就往下走的,貌似每次
#执行,都是重新打开文件

#print(f.readlines()) 读取所有行的内容 存成列表的形式

#print(f.closed)  判断文件是否是关闭状态
#print(f.encoding) 查看文件编码
#print(f.name) 查看文件名字


# ##########以写w的方式打开文件:有则清空,没有则创建#############
# f = open(‘aa.txt‘,encoding=‘utf-8‘,mode=‘w‘)
# #print(f.writable()) 判断是否以可写的方式的打开文件
#
# #f.write(‘aaaaaa\nnbnfbnfb\n‘) 写入文件内容,不会自动换行 \n换行
#
# # f.writelines(‘111111\n222222\n‘)
# # f.writelines([‘你好\n‘,‘我很好\n‘])  也可以用列表的形式写入,元组也可以

# ##########文件的修改#############
#修改文件的原理:不是在源文件上直接修改,而是将源文件的内容导入新的文件,然后修改新的文件
#然后新的文件覆盖源文件,就达到了源文件修改的目的
# import os
# read_f = open(‘aa.txt‘,‘r‘,encoding=‘utf-8‘) #以只读的方式打开源文件
# write_f = open(‘bb.txt‘,‘w‘,encoding=‘utf-8‘) #以写的方式创建新的文件
# #下面的操作是
# # for line in read_f.readlines():
# #     write_f.write(line)
# #或者
# # for line in read_f():
# #     write_f.write(line)
# ##在源文件的内容导入新文件的基础上,将‘改的就是你’这一行修改成‘好的我被修改了’
# for line in read_f.readlines():
#     if line.startswith(‘改的就是你‘):
#         line = ‘好的,我被修改了\n‘
#     write_f.write(line)
# #目前就有了两个文件,但是只需要一个修改后的文件,原理就是删除源文件,将新文件重命名
# ##删除和重命名文件,都得先关闭文件
# #这里要 申明一下 在上边申明import os
# read_f.close()
# write_f.close()
# os.remove(‘aa.txt‘)
# os.rename(‘bb.txt‘,‘aa.txt‘)


##总结打开文件的方式
#f = open(‘bb.txt‘,‘r‘) #只读   有则读出,无则报错
#f= open(‘bb.txt‘,‘w‘) #写的方式  有则清空,无则创建
# f = open(‘bb.txt‘,‘a‘) # 追加  有则光标在最后,无则创建
#f = open(‘bb.txt‘,‘r+‘) #读写
# f= open(‘bb.txt‘,‘w+‘) #写读  会清空的哦
#f = open(‘bb.txt‘,‘a+‘) # 追加并且读

#上下文管理 自动关闭文件
# #针对文件打开,忘记关闭的问题,有了自动关闭功能
# #打开文件bb.txt,并赋值给f
# with open(‘bb.txt‘,‘r‘,encoding=‘utf-8‘) as f:
#     print(f.read())
# #可以同时的打开多个文件
# with open(‘bb.txt‘,‘r‘,encoding=‘utf-8‘) as read_f,open(‘aa.txt‘,‘w‘) as write_f:
#


#b 表示以字节的方式操作
#什么最终都是二进制,二进制识别一切
#以b方式打开时,读取到的内容是字节的形式,写入的时候,也只能以字节的方式,不能指定编码
########  rb
#文件内容:
#还有诗和远方
# with open(‘bb.txt‘,‘rb‘) as f:
#     print(f.read())
#打印结果:
#b‘\xe8\xbf\x98\xe6\x9c\x89\xe8\xaf\x97\xe5\x92\x8c\xe8\xbf\x9c\xe6\x96\xb9‘
# with open(‘bb.txt‘,‘rb‘) as f:
#     print(f.read().decode(‘utf-8‘))
# #打印结果:
# 还有诗和远方
########  wb 写入
# with open(‘c.txt‘,‘wb‘) as f:
#     f.write(‘啊hi有诗和远方‘.encode(‘utf-8‘))

#无所不能的二进制,打开图片
# with open(‘wuwu.jpg‘,‘rb‘) as read_f,\
#         open(‘wuwu_new.jpg‘,‘wb‘) as write_f:
#     write_f.write(read_f.read())


##不常用,了解的知识点
#read 可以加数字 截取文件 针对的是字符 读出几个字符
#以下是以文本的方式打开,读的是文本的前两个字符
# with open(‘bb.txt‘,‘r‘,encoding=‘utf-8‘) as f:
#     print(f.read(2))
#以下是以rb的方式打开,读到的是前两个bytes字符  bytes也是一种字符
# with open(‘bb.txt‘,‘rb‘) as f:
#     print(f.read(2))
#seek 加数字 针对的是字节 比如汉字一个是三个字节,seek(2)的话,截半截 肯定报错
# with open(‘bb.txt‘,‘r‘,encoding=‘utf-8‘) as f:
#     f.seek(3)
#     print(f.tell())# 当前光标在哪个位置
#     print(f.read())

#truncate 截断文件,保留从开头到指定位置的内容  针对的是字节 是一种写操作, w就直接清空了
# with open(‘bb.txt‘,‘r+‘,encoding=‘utf-8‘) as f:
#     f.truncate(3)

#seek 默认起始位置是文件的开始位置 就是0  但是也可以指定相对位置
#在python3中,要用相对位置,必须以b的方式打开
# with open(‘bb.txt‘,‘rb‘) as f:
#     f.read(2)
#     print(f.tell())
#     f.seek(2,1) #1 表示以当前位置为起始点,往后移动两个
#     print(f.tell())
#     f.seek(-1,2) #以文件的末尾位置为开始点,往后移动-2
#     print(f.tell())

#模仿 tail -f access.log
# import time
# with open(‘access.log‘,‘r‘,encoding=‘utf-8‘) as f:
#     f.seek(0,2)
#     while True:
#         line = f.readline()
#         if line:
#             print(‘新增一行‘,line)
#         time.sleep(0.5)


 

以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章

python 文件操作python 文件操作

文件读写操作

文件操作

文件操作

Python文件操作

python文件操作