flash如何制作网站,做数码相的网站,网站群建设原则,百度加速乐wordpress1. 文件操作介绍
说到操作文件我们肯定会想到流#xff0c;文件的操作都是通过流来操作的。在python中文件的操作非常简单#xff0c;并不像Java等其他语言一样有各种各样的流操作#xff0c;我们直接使用open函数即可打开一个文件#xff0c;然后进行各种操作#xff0c…1. 文件操作介绍
说到操作文件我们肯定会想到流文件的操作都是通过流来操作的。在python中文件的操作非常简单并不像Java等其他语言一样有各种各样的流操作我们直接使用open函数即可打开一个文件然后进行各种操作但是根据打开的不同的方式所能够执行的操作也不一样打开文件的方式有r, w, a, r, w, a, rb, wb, ab, rb, wb, ab 等等。
下面我们先看一个读取的文件操作
In [2]: f open(filea.txt, moder, encodingutf-8)In [3]: f.read()
Out[3]: 每天坚持一点\n每天努力一点\n每天多思考一点\n慢慢你会发现\n你的进步越来越大\nIn [4]:
使用open函数打开文件并且返回一个文件对象open函数常见的几个参数file要操作的文件名mode以什么模式打开和encoding指定一种编码来读取文件根据不同的mode模式返回的文件会有各种不同的操作。下面我们来看一下文件的几种操作。
2. 文件操作的几种方式
1只读操作
只读操作只需指定mode为r即可
In [5]: f open(filea.txt, moder, encodingutf-8)In [6]: f.read()
Out[6]: 每天坚持一点\n每天努力一点\n每天多思考一点\n慢慢你会发现\n你的进步越来越大\nIn [7]: f.readable() # 判断文件是否可读
Out[7]: TrueIn [8]: f.writable() # 判断文件是否可写
Out[8]: False # 此处是以只读模式打开的文件所以返回False不可写In [9]: f1 open(file单分支结构.eddx, moderb) # 使用‘rb’可以打开存储为二进制的数据图片、视频等In [10]: f1.read(20)
Out[10]: bPK\x03\x04\x14\x00\x08\x00\x08\x00mN\xe3H\xa9\x95\xb3\x9eW\x01
2只写操作
modew In [13]: f open(filea.txt, modew, encodingutf-8) In [14]: f.read() # 此时尝试读取文件会报错
---------------------------------------------------------------------------
UnsupportedOperation Traceback (most recent call last)
ipython-input-14-571e9fb02258 in module
---- 1 f.read() UnsupportedOperation: not readable In [15]: f.write(葫芦娃)
Out[15]: 3 In [16]: f.close() In [17]: !cat a.txt # 此时查看文件之前那的内容已经被覆盖了
葫芦娃
In [18]:
使用modew操作文件时首先会在打开文件时先清空文件然后再根据操作把内容写入文件只读模式有以下特点
当文件不存在时会自动创建文件然后打开文件进行操作打开文件时会先清空文件的内容然后再从头开始写入文件以只写模式打开不能够读取
3追加操作
modea
In [18]: f open(filea.txt, modea, encodingutf-8)In [19]: f.write(每天坚持一点\n每天努力一点\n每天多思考一点\n慢慢你会发现\n你的进步越来越大\n)
Out[19]: 42In [20]: f.close()In [21]:In [21]: !cat a.txt
葫芦娃每天坚持一点
每天努力一点
每天多思考一点
慢慢你会发现
你的进步越来越大In [22]:
追加模式的操作
打开文件时如果文件不存时会先创建文件往文件中写入内容时都是在文件末尾写入不论光标在哪打开的文件只能写入不能读取
4r模式
r模式是加强的读操作即可以读写
In [22]: f open(filea.txt, moder, encodingutf-8)In [23]: f.readable()
Out[23]: TrueIn [24]: f.writable()
Out[24]: TrueIn [25]: f.read()
Out[25]: 葫芦娃每天坚持一点\n每天努力一点\n每天多思考一点\n慢慢你会发现\n你的进步越来越大\nIn [26]: f.write(\n哈哈哈哈哈哈哈)
Out[26]: 8In [27]: f.close()In [28]: !cat a.txt # 查看写入的文件并没有异常
葫芦娃每天坚持一点
每天努力一点
每天多思考一点
慢慢你会发现
你的进步越来越大哈哈哈哈哈哈哈
In [29]: f open(filea.txt, moder, encodingutf-8)In [30]: f.seek(0, 2) # seek可以调整光标位置
Out[30]: 153In [31]: f.write(你的进步越来越大)
Out[31]: 8In [32]: f.read() # 先写后读会读出空字符
Out[32]: In [33]:
总结增强型的读操作对文件可读可写但是顺序必须是先读取在往里面写入如果先读再写入再读取的时候可能会读取到空字符串
r模式深坑请注意: 在r模式下. 如果读取了内容. 不论读取内容多少. 光标显⽰的是多少. 再写入或者操作⽂件的时候都是在结尾进⾏的操作
(5)w和a模式
w模式和a模式在实际使用场景较少这边简单介绍一下
w增强型的w模式可以写和读操作但是也跟r一样如果先读操作再写操作的话会有坑出现并且每次在打开文件是会先清空文件因此使用场景较少a增强型的a模式也可以进行读写操作但是写入时只能往文件的末尾写入无论光标怎么移动都只能在文件末尾写入
3. 文件的操作的方法
1文件的读取和写入
文件的写入主要是write方法以及writelines方法
write方法直接写入字符串即可上面的例子中也有用到writelines方法传递的参数必须时可迭代的如列表和元组等
文件的读取
read方法read方法接收一个int型的参数表示一次读取几个字符seek的单位是字节不提供默认是读取文件所有内容readline方法读取文件一行文件很大时这个方法很使用不会一次读取整个文件readlines方法读取出整个文件以每一行分割存放到一个列表里并返回这个列表
In [34]: f open(filea.txt, moder, encodingutf-8)
# 葫芦娃每天坚持一点
# 每天努力一点
# 每天多思考一点
# 慢慢你会发现
# 你的进步越来越大# 哈哈哈哈哈哈哈你的进步越来越大
In [35]: f.read(10) # 这里时一次读取10个字符
Out[35]: 葫芦娃每天坚持一点In [36]: f.readline()
Out[36]: \nIn [37]: f.readline() # 每次读取一行
Out[37]: 每天努力一点\nIn [38]: f.readlines() # 返回的是一个列表
Out[38]: [每天多思考一点\n, 慢慢你会发现\n, 你的进步越来越大\n, \n, 哈哈哈哈哈哈哈你的进步越来越大]In [39]: readline文件句柄和readlines的区别 文件句柄是一个可迭代对象在循环遍历时每遍历一次取一行不会在读取文件时一次性全部读出来readlines返回的结果是一个列表会一次性把整个文件的内容读取出来并返回一个列表在处理大文件时会非常消耗资源也可以使用循环去遍历文件句柄输出文件中的内容
In [39]: f.seek(0)
Out[39]: 0In [40]: for line in f:...: print(line.strip())
葫芦娃每天坚持一点
每天努力一点
每天多思考一点
慢慢你会发现
你的进步越来越大哈哈哈哈哈哈哈你的进步越来越大In [41]:
2文件操作的其他方法
close关闭文件readable判断文件是否可读seek移动光标接收两个数据第一个参数表示偏移到哪个位置移动的单位是byte. 所以如果是UTF-8的中⽂部分要是3的倍数第二个参数表示从那个位置开始偏移0代表开头1代表当前位置2代表结尾seekable判断当前文件的光标是否可移动tell返回当前光标所在的位置truncate截断数据谨慎操作默认截断光标后所有字符writable判断文件是否可写
3打开文件的另一种方式
在打开一个文件后要记得在文件使用结束狗使用close方法关闭文件句柄但有时在中间进行大量的操作后可能会忘了关闭下面介绍的这种方法可以不用自己手动关闭文件了他会在您操作解说后代码块的语句执行完毕自动关闭文件句柄这种方法就是使用context上下文管理使用with语句实现
In [43]: with open(a.txt, moder, encodingutf-8) as f: # 使用with管理上下文最后退出时会自己执行close动作...: for line in f:...: print(line.strip())
葫芦娃每天坚持一点
每天努力一点
每天多思考一点
慢慢你会发现
你的进步越来越大哈哈哈哈哈哈哈你的进步越来越大