python 文件与类型

本文介绍了Python中文件的基本操作,包括创建文件对象、使用不同模式(如write、read、append)处理文件内容。详细讨论了write写入文件、read逐行读取文件以及使用readlines()获取文件内容的列表。还讲解了pickle模块用于存储和读取Python对象的方法,以及使用with语句进行文件的临时调取和关闭,确保文件管理的正确性。最后,对文件中的集合和数字汇总进行了简要总结。
摘要由CSDN通过智能技术生成

文件

特别不好意思,最近变懒了,都不好意思跟我老师👨🏻‍🏫联系了,(没脸)🙈。再这样下去跟咸鱼有什么区别?还能不能翻身农奴把歌唱了!啊?!—— 来自一名党员同志的反思和自我批评 ✍️✍️。

  • 不浪费时间了,主题博客action!
  • 创建一个对象,链接到本机上,用python内置好的方法👉:
    基本语法:
基本语法
file=open...
mode: w, r, a, b, +,...

基本操作:

  1. read() 2. readline() 3. readlines() 4. close()

1. 创建一个对象

>>> myfile=open('hi.txt','w') # 创建一个文件,模式选择w,也就是写入内容
  • 那么如何在pycharm中找到这个文件呢?

  • 那就是在当下的pycharm文件夹下点击当前文件夹一下,咋跟老师讲的不一样呢?估计版本升级了,试出来的。相当于"synchronize"(同步刷新)一下当前文件夹。

2. 对文件进行相应的mode(模式)处理(write,read,append…)

* --------- ① write 写入内容

>>> myfile=open('hi.txt','w')
>>> myfile.write('你好,我的世界\n')
8                       # 返回“8”表明写入8个字符
>>> myfile.write('hi,my world')
11                      # 同理
>>> myfile.close()      # 注意有一个结束句
  • 现在如何看到“hi.txt”中是否真的已经写入内容了呢?
  • 接着在此点击或者双击当前文件夹,则在hi.txt中文件内容便synchronize(同步)出来。
    显示创建文件内容
  • 如果在创建的对象中写入内容后出现乱码现象,可以在创建文件之处就设置出编码类型“utf8”(其实具体这是啥咱也不是很清楚😆,反正比着葫芦画瓢这事儿我在行),代码如下:
>>> x = open('hello.txt','w',encoding='utf8')
>>> x.write('加入编码,防止乱码\n')
10
>>> x.write('including encoding')
18
>>> x.close()

运行结果:
对象编码

  • 将某些类型数据写入新创建的对象
>>> a,b,c=1,2,'nice'
>>> d=[3,4,5]
>>> y = open('data1.txt','w')
>>> y.write('{},{},{}'.format(a,b,c))  # 利用占位符
8
>>> y.write('\n')
1
>>> y.write(str(d))
9
>>> y.close()

在这里插入图片描述

* --------- ② read 读取内容

>>> f = open('hi.txt')
>>> f.read()
'你好,我的世界\nhi,my world'
>>> f.read()
''
  • read在这里是相当于一个指针,如果用.read(),则一次性读取所有内容,再一次读取时,就会返回空值。意思是刚已经读完了,再也读不出新的东西来了!
  • 那么,如何一行一行地读取出来呢?
>>> f = open('hi.txt')
>>> f.readline()
'你好,我的世界\n'
>>> f.readline()
'hi,my world'
>>> f.readline()
''
  • 如此便实现了一行行读取,但这种.readline()需要不断写入读取代码.有点麻烦,怎么一次性输出所有行呢?这里可以借助列表list:
>>> l = open('hi.txt').readlines()
>>> l
['你好,我的世界\n', 'hi,my world']
  • .readlines()有什么特殊之处呢?注意,l与f的区别是,l不仅open hi.txt,读取内容,还将读取的内容以列表的形式放入l当中。
  • 再利用for循环,将列表内容按照行打印出来:
>>> for line in l:
...     print(line)    # 将每一行打印出来
... 
你好,我的世界

hi,my world
  • 再比如,读取写入多种类型数据地data1.txt:
>>> character = open('data1.txt').read()
>>> character 
'1,2,nice\n[3, 4, 5]'

扎堆了不好看,可以再用.split() 切割

>>> character.split('\n')  # 以换行符为标志分割字符串
['1,2,nice', '[3, 4, 5]']

* --------- ③ pickle模块的读写和存储

pickle存取python对象
dump...
load...
>>> d={'a':1,'b':2}
>>> f=open('data2.pkl','wb')
>>> import pickle
>>> pickle.dump(d,f)
>>> f.close()
>>> open('data2.pkl','rb').read()
b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02K\x02u.'    # 读取的是二进制
  • 那么怎么让读出来的内容是原样子的呢?
>>> f = open('data2.pkl','rb')
>>> data = pickle.load(f)  # pickle模块本身的load功能,从文件当中载入
>>> data
{'a': 1, 'b': 2}

* --------- ④ with对文件的临时调取与存储

将文件中的内容调取出来存储,如果用“f = open(‘hi.txt’)”+“l = open(‘hi.txt’).readlines()”,通常会忘记对文件进行close,后续可能会引发一系列的问题。于是用“with”临时调取,随取随关的模式就方便多了。
代码如下:

>>> with open('hello.txt') as f: # 打开这个文件临时取一个名称叫f,联系上下文的作用
...     for line in f.readlines():
...             print(line)           # 注意缩进
... 
加入编码,防止乱码

including encoding

3. 总结

* --------- ① 文件的具体操作

文件的操作
存取Python对象 pickle:写对象 dump(对象,目标文件),读对象 read(目标文件)

* --------- ② 文件的中的集合和数字汇总

集合和数字汇总* 当然文件中还会涉及可调用(函数 function,生成器 Generation,类class及方法)及其他,后续学习面向对象的时候再总结吧!

所以

长风破浪会有时,直挂云帆济沧海!不可再偷懒!💪💪
(嗨,其实也没那么偷懒,地里种的西红柿🍅被照料得可好了,最近长高了不少,回头抛个照片放博客上,也见证我的种菜水平up up up😊😊)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值