文件操作

博客介绍了冯诺依曼体系架构,包括CPU(运算器和控制器)、存储器、输入输出设备等组成部分。还详细讲解了文件IO常用操作,如open函数的参数(mode、buffering、encoding等)、文件指针操作(tell、seek)以及缓冲区(flush、close)等知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

冯诺依曼体系架构:

                               CPU:由运算器和控制器组成

  •                                         运算器:完成各种算数运算,逻辑运算,数据传输等数据加工处理
  •                                         控制器:控制程序的执行
  •                                         控制器:用于记忆程序和传输,例如内存
  •                                         输入设备:将数据或者程序输入到计算机中,例如键盘和鼠标
  •                                         输出设备:将数据或程序的处理结果展现给用户,例如显示器,打印机等

                              一般来说IO操作,指的是文件IO,如果指的是网络IO,都会直接说网络IO

 

文件IO常用操作:

columncolumn

open

打开
read读取
write写入
close关闭
readline行读取
readlines多行读取
seek文件指针操作
tell指针位置

 

open的参数:

                     打开或者要创建的文件名,如果不指定路径,默认是当前路径

 mode:

描述字符意义
r缺省的,表示只读打开
w只写打开
x创建并写入一个新文件
a写入打开,如果文件存在,则追加
b二进制模式
t缺省的,文本模式
+读写打开一个文件,给原来只读,只写方式打开提供缺省的读或写能力
  1. open默认是只读模式r打开已经存在的文件。
  2. r:只读打开文件,如果使用write方法,会抛异常。如果文件不存在,则抛出FileNotFoundError
  3. w:表示只写方式打开,如果读取则抛出异常,如果文件不存在,则直接创建文件,如果文件存在,则清空文件内容
  4. a:文件存在,只写打开,追加内容文件不存在,则创建后,只写打开,追加内容
  5. 文本模式t字符流:将文件的字节按照某种字符编码理解,按照字符操作。open的默认mode就是rt
  6. 二进制模式b字节流:将文件按照字节理解,与字符编码无关,二进制模式操作时,字节操作使用bytes类型
  7. +:为r,w,a,x提供缺失的读或写功能,但是,获取文件对象依旧按照r,w,a,x自己特征。+不能单独使用,可以认为他是为前面的模式字符做增强功能。

文件指针,指向当前字节位置:

  •                                                  mode = r,指针起始在0 mode = a,指针起始在EOF
  •                                                  tell():显示指针当前位置
  •                                                  seek(offset[,whence])移动文件指针位置。offset偏移多少字节,whence从哪里开始

                                                 文本模式下whence0缺省值,表示从头开始,offest只能正整数 whence1 表示从当前位置,offest只接受0whence2表示从EOF开始,offest只接受0

 

buffering:缓冲区

                            -1表示使用缺省大小的buffer。如果是二进制模式,使用io.DEFAULT_BUFFER_SIZE,默认是4096或者8192,如果是文本模式,如果是终端设备,是行缓存方式,如果不是,则使用二进制模式的策略。

                            0只在二进制模式使用,表示关buffer

                            1只在文本模式使用,表示使用行缓存。意思就是见到换行符就flush

                            大于1用于指定buffer的大小

                     buffer  缓冲区:

                                             缓冲区一个内存空间,一般来说是一个FIFO队列,到缓冲区满了或者达到阈值,数据才会flush到磁盘。

                                              flush()将缓冲区数据写入磁盘close()关闭前会调用flush()

                                              io.DEFAULT_BUFFER_SIZE:缺省缓冲区大小,字节

 

encoding:编码,仅文本模式使用:

                                                         None表示使用缺省编码,依赖操作系统。windows,linux下测试如下代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值