一、文件操作

1、文件对象:和c一样,要想对一个文件进行操作,需要获取该文件的对象

 f = open("xxx") # 打开文件并获取文件对象
f.xxx # 对文件进行某些操作
f.close() # 关闭文件

2、访问模式:

open函数除了接受一个文件名参数外,还可以设定文件的访问模式(open其他的参数不太能理解)

  • 无   以只读方式打开,文件必须存在
  • r     以只读方式打开,文件必须存在
  • w    以只写方式打开, 先删除原有内容再写入新内容,文件不存在创建新文件
  • a    以追加写方式打开,在原有文件末尾添加新内容,文件不存在创建新文件
  • +    r+可读写,文件必须存在,从开头开始写(只覆盖原内容的前面部分);
  •   w+可读写,文件不存在创建新文件,删除原内容后再写;
  •   a+可读写,文件不存在创建新文件,在原内容末尾开始写
  • t   文本模式(默认)
  • b    二进制模式,如rb, wb, ab, r+b, w+b, a+b等
  • U    通用换行符格式(将\r, \n, \r\n 都转化为\n),不建议使用

二、文件内置方法

假设现在有一个同级目录下的文件test.txt:

I was a handsome boy!
I love China!
Hello python!

1、输入:

  • read(n)->str 读取指定字节到字符串中,默认读到文件末尾
 f = open('test.txt')
print(f.read(5)) # 读取5个字节
print(f.read()) # 读取剩余所有字符串
f.close() """输出:
I was
a handsome boy!
I love China!
Hello python!
"""
  • readline(n)->str 读取指定字节到字符串中,默认读到行结尾(最后一行读到文件结尾)
 f = open("test.txt")
print(f.readline(5)) # 读取5个字节
print(f.readline()) # 读取到这一行的末尾
f.close() """输出:
I was
a handsome boy!
"""
  • readlines()->list 读取所有剩余的行,作为字符串列表返回,其中包括换行符
 f = open("test.txt")
print(f.readlines())
f.close() """输出:
['I was a handsome boy!\n', 'I love China!\n', 'Hello python!']
"""

2、输出:

  • write(str)->int 将指定字符串写入文件中,返回字符串的长度
 f = open('test.txt', 'w+')
print(f.write("I love China!")) # 返回写入的长度
f.close()
  • writelines(lst) 将一个字符串列表写入文件中,换行符不会被加入
 f = open('test.txt', 'w')
f.writelines(['I am handsome!\n', 'I love China!\n', 'Hello Python!'])
f.close()
# 需要手动添加换行符

3、移动:

  • seek(offset, 0) 移动文件指针, 0表示从开头开始,1表示从当前位置,2表示从文件末尾,需要以b形式打开
 f = open("test.txt", 'rb')
print(f.read(5))
f.seek(12, 1) # 文件指针从当前位置移动
print(f.read(5))
f.close() """输出:
b'I was'
b'boy!\r'
"""
  • tell()->int 告诉当前文件指针的位置

4、迭代:

文件支持和其他可迭代对象一样的迭代访问,并且与readlines()相比更高效

 f = open('test.txt')
for eachLine in f:
print(eachLine.strip()) # 需要手动地去除末尾的换行符
f.close() """输出:
I was a handsome boy!
I love China!
Hello python!
"""

5、其他:

  • fileno()->int 返回底层的打开文件的描述符
  • flush() 直接把内部缓冲区的数据立即写入文件
  • truncate()->int 截取文件到文件指针位置,可以指定或用f.tell(),返回截断后的长度

三、文件内置数据属性

  • f.closed 文件关闭时为True
  • f.encoding 文件所使用的编码
  • f.mode 文件打开时的访问模式
  • f.name 文件名
 f = open('test.txt')
print(f.closed, f.encoding, f.mode, f.name)
f.close() """输出:
False cp936 r test.txt
"""

四、with语句

用于常常会忘带关闭文件,可以把文件对象的作用域放在with as中,当离开作用域后,文件自动关闭

 with open('test.txt') as f:
pass

最新文章

  1. 继承下public,protected,private访问权限
  2. C#调用杀毒软件MSE扫描指定目录或文件
  3. javascript错误处理与调试(转)
  4. 利用pip8.1.2 安装django1.9.7
  5. java 删除字符串中的反斜杠\
  6. WTL安装
  7. 如何给 UILable 添加横线
  8. 零基础学习Hadoop
  9. 4.C++中的函数重载,C++调用C代码,new/delete关键字,namespace(命名空间)
  10. Java爬取12306余票
  11. 1084: 开心的小明(dengdengoj)
  12. mongoDB,mongoose,没有数组就添加,如果有了数组,就向数组中添加新元素
  13. RFID数据清洗与数据清洗的区别
  14. zmq setsockopt()
  15. nginx报错:403 Forbidden 并且访问首页index.php是下载文件的状态
  16. Go语言规格说明书 之 词汇元素(Lexical elements)
  17. 【Spring】spring的7个模块
  18. [转]What are mode and status columns under gp_segment_configuration table
  19. [Leet Code]Path Sum
  20. 来自阿里妈妈的iconfont(转)

热门文章

  1. JFinal使用笔记3-注册和登录功能开发记录
  2. 第一百六十节,封装库--JavaScript,ajax注册表单到数据库
  3. Spark源码分析(四)-Job提交过程
  4. 微信 Mustache
  5. .NET程序调试技巧(一):快速定位异常的一些方法
  6. 《C++程序设计》朝花夕拾
  7. iOS-如何在项目中使用CocoaPods
  8. Segmented 标签栏 切换效果
  9. Http服务器实现文件上传与下载(一)
  10. Thrift快速入门