码迷,mamicode.com
首页 > 其他好文 > 详细

day3_文件读写

时间:2018-02-27 12:45:16      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:val   one   eval   user   string   文件的   指针   word   转换   

python3里面只有这一种打开文件的方法,open(‘a.txt‘),文件叫什么名字都行

文件打开的时候有三种方式(读、写、追加),默认是读的方式打开文件

读,用r表示,以读文件的方式打开的时候,如果文件不存在会报错;如果文件存在,而且不需要往文件里写东西的时候,用r打开,只要沾上r,文件不存在的时候就会报错

 

f = open(‘a.txt‘),如果a.txt不在当前目录下会报错,如果想不报错就创建一个a.txt,如果a.txt文件里有内容就会把内容读出来

f = open(‘a.txt‘,encoding = ‘utf8‘)

print(f.read()) #读取文件所有内容,读到内存中,返回的是一个字符串

print(f.readlines()) #读取文件所有内容,返回的是一个list,list每个元素是文件的每一行

print(f.readline()) #每次只取一行内容,要取多行内容,要多次执行print(f.readline())

写,用w表示,以写文件的方式打开的时候,如果文件不存在,会新建一个文件;如果文件存在会把之前的文件内容清空,然后会读不到内容报错,只要沾上w,就会清空以前的文件内容

f = open(‘a.txt‘,‘w‘,encoding = ‘utf8‘)

print(f.read())

f = open(‘a.txt‘,‘w‘,encoding = ‘utf8‘)

f.write(‘哈哈哈哈‘) #write是写内容,只能写字符串

f.writelines([‘123\n‘,‘345‘])#writelines写入的是一个list

f = open(‘a.txt‘,‘r+‘,encoding = ‘utf8‘) # r+是读写模式

f.write(‘哈哈哈哈‘) #会把之前文件里有的内容覆盖掉

f = open(‘a.txt‘,‘w+‘,encoding = ‘utf8‘) #w+是写读模式

f.write(‘哈哈哈哈‘) #会把之前文件里有的内容覆盖掉

f.seek(0) #移动文件指针

print(f.read())

r+和w+这两种模式都不好,会把之前的内容清空

 

追加,用a表示,a的好处是没有文件会创建文件,也不会清空以前的文件内容,也不报错

f = open(‘b.txt‘,‘a‘,encoding = ‘utf8‘)

f.write(‘哈哈哈哈‘)

f.seek(0) #移动文件指针

print(f.read())

追加(a)模式只能写,不能读,运行的时候会报错

#a+是追加读写模式

f = open(‘b.txt‘,‘a+‘,encoding = ‘utf8‘)

f.write(‘哈哈哈哈‘)

f.seek(0) #移动文件指针

print(f.read())

追加读写(a+)模式既能写,又能读

 

f = open(‘b.txt‘,‘a+‘,encoding = ‘utf8‘)

print(f.read())

执行上面两行会为空显示,因为a+模式是从文件的末尾追加,读的时候会显示空内容,要想读到内容必须加上f.seek(0)才能读出来

 

循环一个文件对象的时候,循环的是文件的每一行

f = open(‘b.txt‘,‘a+‘,encoding = ‘utf8‘)

f.seek(0)
i = 1

for line in f: #文件比较大的话,for循环效率比较高

     print(‘第{hang}行:{line}‘.format(hang = i, line = line))

     i = i + 1

f.close() #手动关闭文件

with open(‘b.txt‘,‘a+‘,encoding = ‘utf8‘) as f: #运行完成后,with可以自动关闭文件

   f.seek(0)

   for line in f:

       print(line)

 

user_info = {

             ‘jmy‘: {‘money‘:100,

                   ‘shengao‘:180,

                   ‘password‘:‘123456‘},

             ‘agr‘: {‘money‘:30,

                   ‘shengao‘: 190,

                   ‘password‘:‘123456‘ }

}

f = open(‘users.txt‘,‘a+‘,encoding = utf8)

f.write(user_info) #第一种情况,运行会报错,因为write写入的是字符串,而现在是字典要写到users.txt里

print(str(user_info)) #第二种情况,强制类型转换成字符串,虽然能读出来但是没写进去

f.seek(0) #第三种情况,把文件指针移到最开始

print(f.read())#第三种情况,没有写进去,什么也读不到

f.write(str(user_info)) #第四种情况,写到文件里了,但是写进去的是一个字符串

f.seek(0) #第五种情况,把文件指针移到最开始

print(f.read())#第五种情况,读出来了

f.seek(0) #第六种情况,把文件指针移到最开始

print(type(f.read()))#第六种情况,查看类型,发现是字符串类型,字符串类型不好取值

f.seek(0) #第七种情况,把文件指针移到最开始

print(dict(f.read())) #第七种情况,转换类型,报错,不能转换

f.seek(0) #第八种情况,把文件指针移到最开始

print(eval(f.read())) #第八种情况,转换类型,字符串转换成字典类型

f.seek(0) #第九种情况,把文件指针移到最开始

new_user_info = eval(f.read()) #第九种情况,转换类型,验证是否已转换成字典类型

print(type(new_user_info)) #第九种情况,转换成功,打印出< class‘dict’>

f.seek(0) #第十种情况,把文件指针移到最开始

new_user_info = eval(f.read()) #第十种情况,在users2.txt里输入一个list

print(type(new_user_info)) #第十种情况,转换成功,打印出< class‘list’>

同理在users2.txt里输入一个tuple/string,会打印出< class‘tuple/‘str‘ >

怎么把字典存到文件里面,通过字符串的形式把字典存进文件(将字典转换成字符串),然后再把字符串转换成字典读出来(再将字符串转换成字典)

day3_文件读写

标签:val   one   eval   user   string   文件的   指针   word   转换   

原文地址:https://www.cnblogs.com/laosun0204/p/8478190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!