Python文件读写机制
Python提供了必要的函数和方法进行默认情况下的文件基本操作
文件打开方式:
open(name[,mode[buf]])
name:文件路径
mode:打开方式
buf:缓冲buffering大小

文件读取方式:
read([size]):读取文件(读取size字节,默认读取全部)
readline([size]):读取一行
readline([size]) :读取缓冲buf(io.DEFAULT_SET_BUFFER),返回每一行所组成的列表
iter:使用迭代器遍历读取文件 f.open(name);iter_f = iter(f);用for line in iter_f循环迭代器
文件写入方式:
write(str):将字符串写入文件
writelines(sequence_of_strings):写多行到文件,参数为可迭代的对象

当调用write(str)时,python解释器调用系统调用想把把内容写到磁盘,但是linux内核有文件缓存机制,所以缓存到内核的缓存区,当调用close()或flush()时才会真正的把内容写到文件
或者写入数据量大于或者等于写缓存,写缓存也会同步到磁盘上
关闭文件的目的
1:写缓存同步到磁盘
2:linux系统中每个进程打开文件的个数是有限的
3:如果打开文件数到了系统限制,在打开文件就会失败
python文件指针的操作:
seek(offset[,whence])移动文件指针
offset:偏移量,可以为负数
whence:偏移相对位置
python文件指针的定位方式:
os.SEEK_SET 相对于文件的起始位置 0
os.SEEK_CUR 相对于文件的当前位置 1
os.SEEK_END 相对于文件的结尾位置 2
Python 文件属性:
file.fileno(): 文件描述符;
file.mode: 文件打开权限;
file.encoding: 文件编码方式;
file.closed: 文件是否关闭;
Python 标准文件:
标准输入文件:sys.stdin; 只读 描述符为0
标准输出文件:sys.stdout; 只写 描述符为1
标准错误文件:sys.stderr; 只写 描述符为2
Python 命令行参数:
sys模块提供sys.argv属性,通过该属性可以得到命令行参数。sys.argv是一个字符串序列,保存着命令行的参数,其中sys.argv[0]是文件名,1~n是真正的参数
Python 文件编码方式
Python文件默认的编码格式是ASCII格式,要写入中文可以将编码格式进行转换
1. a = unicode.encode(u'你好', 'utf-8') 转换, 一个汉字在ASCII码中占3字节,在unicode中占2字节。
2. 直接创建utf-8格式的文件。使用codecs模块提供的方法创建指定编码格式文件:
codecs.open(fname, mode, encoding, errors, buffering): 使用指定编码格式打开文件
3. 使用系统提供的open()函数也可以创建指定编码格式的文件:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Linux文件系统简单示意图

下面是python操作文件的流程

看完这些,是不是对python的文件机制有了一定的了解了^^!
作者:Andy
出处:http://www.cnblogs.com/onepiece-andy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Python文件读写机制的更多相关文章
- python文件读写及形式转化和CGI的简单应用
一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...
- python 文件读写操作(24)
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...
- Python 文件读写,条件循环(三次登录锁定账号实例)
通过文件读写,条件循环相关语法,实现三次登录失败则锁定该账号的功能 需求一 """需求描述: 1.输入正确账号,密码,退出程序 2.登录失败,重新输入账号密码 3.同一账 ...
- Linux文件读写机制及优化方式
导读 Linux是一个可控性强的,安全高效的操作系统.本文只讨论Linux下文件的读写机制,不涉及不同读取方式如read,fread,cin等的对比,这些读取方式本质上都是调用系统api read,只 ...
- 【学习】python文件读写,用with open as的好处,非常好【转载】
原文链接:http://www.cnblogs.com/ymjyqsx/p/6554817.html 备注:博主还有很多值得学习的笔记,遇到问题可以拜读,非常感谢博主的总结 读写文件是最常见的IO操作 ...
- python文件读写,以后就用with open语句
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- Python文件读写(open(),close(),with open() as f...)
Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题 ...
- python 文件读写方式
一.普通文件读写方式 1.读取文件信息: with open('/path/to/file', 'r') as f: content = f.read() 2.写入文件中: with open('/U ...
- Python文件读写、StringIO和BytesIO
1 IO的含义 在计算机中,IO是Input/Output的简写,也就是输入和输出. 由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就 ...
随机推荐
- C++类型处理:typedef decltype
类型别名 类型别名是某种类型的同义词 有两种方法用于定义类型别名,传统方法是使用typedef: typedef double wages; //wages是double的同义词 typedef wa ...
- ASP.NET MVC EF 连接数据库(一)-----Database First
database first (VS2015 ,Sql Server2014) 1,新建MVC项目 实例: 源码代码:http://note.youdao.com/noteshare?id=1fd ...
- CMake编译的VS工程,安装时遇到错误:error MSB3073: 命令“setlocal
错误提示 70>CMake Error at src/base/cmake_install.cmake:63 (file): 70> file INSTALL cannot find 70 ...
- PDO封装增删改查
<?phpclass db{ public $table=null; public $pdo; public $where=null; //where 条件 public $field=null ...
- SpringBoot结合策略模式实战套路
1. SpringBoot结合策略模式实战套路 1.1. 前言 我们都知道设计模式好,可以让我们的代码更具可读性,扩展性,易于维护,但大部分程序猿一开始都学过至少一遍设计模式吧,实战中不知用到了几成. ...
- Excel解析工具easyexcel全面探索
1. Excel解析工具easyexcel全面探索 1.1. 简介 之前我们想到Excel解析一般是使用POI,但POI存在一个严重的问题,就是非常消耗内存.所以阿里人员对它进行了重写从而诞生了eas ...
- 前端vue项目js中怎么保证链式调用后台接口
在一个for循环中对同一接口调用多次,如何保证逐步执行,同步执行. html部分 <DcFileUpload v-for="(item, index) of fileLengthLis ...
- SAP MM 同一个序列号可以被多次用在交货单发货过账?
SAP MM 同一个序列号可以被多次用在交货单发货过账? 如下公司间转储订单,从公司代码CSAS转入公司代码HKCS, 物料有启用序列号管理. 转储数量为5 PC.该STO单据共计有2个外向交货单 8 ...
- MQTT实战2 - 使用MQTTnet实现mqtt通信
MQTT实战1 - 使用Apache Apollo代理服务器实现mqtt通信 MQTT实战2 - 使用MQTTnet实现mqtt通信 源码下载 -> 提取码 QQ:505645074 MQTT ...
- ansible服务部署
1.ansible.cfg配置文件 [defaults] #inventory= /home/op/ansible/testing #sudo_user=root remote_port=9122 r ...