python文件的读写

1、使用open内置函数打开一个文件

file:相对路径或者绝对路径

mode:文件的模式。 r 只读   w只写  b:二进制  t:以文本形式打开等等

encoding:编码方式,windows下默认为gbk

例子:

读文件的例子

file=open('./a.txt',encoding='utf8')
print(file.read())#读取整个文件,
#print(file.read(10))#read可以指定读取的长度,一般建议使用指定长度的方式,否则cpu可能运行很长时间
file.close()
file=open('./a.txt',encoding='utf8')
while True:
    content=file.readline()
    print(content)#每次只读取一行
    if content == '':
        break
file.close()
file=open('./a.txt',encoding='utf8')
content= file.readlines()#读取所有文件,并以每一行为单位放在一个列表里
print(content)
file.close()

 推荐的读

file=open('./a.txt',encoding='utf8')
while True:
    content = file.read(1024)#每次读1024个长度
    print (content)#读取整个文件
    if not content:
        break
file.close()

 

写文件的例子,其他说明:如果写入的文件不存在,则会自动创建一个文件并不会报错。

file=open('./a.txt','w',encoding='utf8')
file.write('美丽')
file.close()

 文件名的切割

file_name='kaixin.txt'
print(file_name.rpartition('.'))#以.作为分隔符,从右边可是切,返回一个元组('kaixin', '.', 'txt'),有时会用这种方式拆解分割名字
import os
file_name='kaixin2020.10.25.txt'
print(file_name.rpartition('.'))#结果('kaixin2020.10.25', '.', 'txt')
print(os.path.splitext(file_name))#结果('kaixin2020.10.25', '.txt')

 异常处理

import os
if not os.path.exists(path): #判断一个文件夹或者文件是否存在,都可用##os.path.isfile("test-data")#判断一个文件是否存在


##也可用这种方式
try: 
    f =open()
    f.close()
except IOError: 
    print "File is not accessible."
#except这里有很多种写法
#except Exception as e: #给异常起了一个变量名e  最建议的写法,这个是最大的父类
#  print(e)
#except FileNotFoundError as e: #指定类型错误,文件不存在的错误

#try...except...else语句 先try,如果try成功就执行else,如果try失败就走except

 

 其他

write中只能写入字符串或者二进制,所以字典、列表、元组等不可能直接写入其中,可以通过str/repr或者json模块转换为字符串再写入。

也可通过pickle转化为二进制也行。

json:

json.dumps(list)#以list举例,作用是将数据转换为json字符串,不会将数据保存到文件里(序列化)

json.dump(list,file)#作用是将数据转换为json字符串的同时会将数据保存到指定文件里

json.load(list)#以list举例,将字符串读取并转化为数据的过程,比如转化为字典等 (反序列化)

json.loads(file)#作用是读取一个文件并将读取到的字符串转为数据

pickle:

可将任意对象转化为二进制,比json广

pickle.dumps()#将作用是将数据转换为二进制,dump类似上

pickle.loads()#将二进制转化为数据,load类似上

二者的区别?

pickle是将数据原封不动的转为二进制,但是这个二进制只能被python识别读取,比如类也可以被存储,其load后,方法均可正常使用,一摸一样。

json是只保留部分信息,用于不同平台之间的信息传递,其中存储的都是基本的类型,不能传函数、类等,但是可以传递字典、列表、字符串、bool等基本的数据类型。

 


 

with是一个上下文管理器,后面需要__enter__和__exit__方法

with open(file,r) as file:

  file.read()

       无需在写file.close()

 

posted @ 2020-10-25 16:28  aslmer  阅读(176)  评论(0编辑  收藏  举报