基本打开模式

  • 文件操作的流程:打开文件,操作文件,关闭文件
  • 打开文件方法:open(文件名,模式,编码)
  • file = open(‘文件名’) 模式在不给值的情况下,默认为只读,而且如果是非当前的目录下文件名要加绝对路径

  

  ‘r’--只读

  • file_name.read()   一次性把指针后的内容全部读出来

  

  • file_name.readlines()  把指针后内容,以列表的形式每行读出

f = open('ha.log','r')
data1 = f.readlines()
f.close()
print(data1)
#结果为:['that is good!\n', 'nice to meet you!\n', 'hello kitty!\n'] f = open('ha.log','r')
f.seek(5)
data2 = f.readlines()
f.close()
print(data2)
#结果为:['is good!\n', 'nice to meet you!\n', 'hello kitty!\n']
  • file_name.readline()  每一次读一行内容

  

  • 文件里循环读取,循环文件默认是循环行内容
f = open('ha.log','r')
for line in f:
print(line)
f.close()
#结果为:
that is good! nice to meet you! hello kitty!

 'r'模式总结:只读模式在打开文件时是从头开始读,其中read()和readlines()是一次把文件所有内容都读取出来,在文件很大时,不建议这两种方法,非常占内存

       而readline和循环文件是一行一行读,两次方法每次读取都是只占一行内容的内存,readline操作比较繁琐,并且你如果不知道最后一行在哪,一般容易报错,

       一般用for循环

  ‘w’--只写

  • 以只写模式打开时,先检测文件存不存在,不存在就创建,存在清空文件内容

  

  • file_name.writelines()  和只读里的readlins相对应,以列表形式写入
f = open('ha.log','w')
f.writelines(['that is good!\n', 'nice to meet you!\n', 'hello kitty!\n'])
f.close() f = open('ha.log','r')
data = f.read()
f.close()
print(data)
结果为:
that is good!
nice to meet you!
hello kitty!

  ‘w’模式总结:只写模式适用于创建不存在的文件,用于清空内容再写入内容情况比较少,如果说想在文件末尾添加内容,这就涉及到我们即将讲的‘a’模式

  ‘a’--追加模式

  • 打开文件时,指针跳到文件的末尾,此时执行写操作就是内容添加操作
  • 追加模式下不可读,不存在则创建,存在则追加
f = open('ha.log','a')
print(f.tell())
f.write('大家好')
f.close() f = open('ha.log','r')
data = f.read()
f.close()
print(data)
结果为:
48
that is good!
nice to meet you!
hello kitty!
大家好

  ‘x’--只写

  • 不存在创建,存在则报错(这个模式py3新增的)    --用于判断文件存不存在非常有用

  

字节打开模式

  • 别看我们平时操作都是能看懂的字符串,其实在程序底部都是一些计算机能识别的二进制文件,所以让我们看懂,必须经过一个编码转换区,由字节转换为字符

  

  'rb'--字节只读模式

  

  'wb'--字节只写模式

  

文件操作指针

  • file_name.seek()  指针拨到指定位置
  • file_name.tell()  告诉你当前指针的位置

  

  • r+ 读写--从0开始
  • w+ 写读--写把文件清空,从0开始
  • a+ 写读--指针从末尾开始
  • x+ 写读--存在报错,从0开始

  

  

with open('ha.log','w') as f:
f.writelines(['大家好才是真的好\n','明天的太阳依旧灿烂\n']) #打开以a+模式,如果先写,是从当前指针开始往后覆盖内容
with open('ha.log', 'r+') as f:
print(f.tell()) #0
f.write('早起的鸟儿有虫吃\n')
f.seek(0)
data3 = f.read()
print(data3)
# 结果为:
# 早起的鸟儿有虫吃
# 明天的太阳依旧灿烂

文件上下文管理

  • with open(’文件名‘,模式) as 文件变量:文件操作---------这种方式不用再写文件关闭了,因为这种方式在操作后会自动关闭文件
  • 在py3还支持同时打开两个文件:with open(文件1,模式) as obj1,open(文件2,模式) as obj2:文件操作

  大型文件复制:

with open('ha.log','r') as obj1,open('ha2.log','w') as obj2:
for line in obj1:
obj2.write(line) with open('ha2.log','r') as obj2:
data = obj2.read()
print(data)

文件操作常用方法拾遗

  • file_name.flush()  强行把内存刷到硬盘
  • file_name.truncate()  保留指针前的内容
with open('ha2.log','a+') as obj1:
obj1.seek(6)
obj1.truncate()
obj1.seek(0)
data = obj1.read()
print(data) #结果为:大家好

欢迎大家对我的博客内容提出质疑和提问!谢谢

                                                                             笔者:拍省先生  

python基础-第四篇-4.2文件操作的更多相关文章

  1. python基础——6(字符编码,文件操作)

    今日内容: 1.字符编码: 人识别的语言与机器识别的语言转化的媒介 *****     2.字符与字节: 字符占多少字节,字符串转化 ***     3.文件操作: 操作硬盘中的一块区域:读写操作  ...

  2. python 基础学习笔记(5)--文件操作

    **python 的文件操作** - [ ] 使用python来读写文件是非常简单的操作,我们使用open()来打开一个文件,获取到文件的语柄,然后通过文件语柄就可以进行各种各样的操作了. - [ ] ...

  3. python基础-第四篇-4.1内置函数

    lambda表达式 lambda表达式是对简单函数的精简化表达 语法结构:函数名 = lambda:运算表达式 def f1(a): a = a + 1 return a ret = f1(1) pr ...

  4. python、第四篇:记录相关操作

    一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  5. Python基础6--函数、类和文件操作

    1 def name(para) def myabs(x): if x>0: return x else: return -x 2 lambda表达式 用于声明匿名函数,既没有名字的小函数 f ...

  6. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  7. Python基础知识(四)

    Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...

  8. Python基础学习四

    Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...

  9. 简学Python第二章__巧学数据结构文件操作

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

随机推荐

  1. prompt() 方法

    定义和用法 prompt() 方法用于显示可提示用户进行输入的对话框. 语法 prompt(text,defaultText) 参数 描述 text 可选.要在对话框中显示的纯文本(而不是 HTML ...

  2. jquery插件-table转Json数据插件

    使 用开源插件Table-to-json: 官方地址:http://lightswitch05.github.io/table-to-json/ 功能说明:将js对象table转换成javascrip ...

  3. 华中农业大学校赛--c The Same Color

    Problem C: The Same Color Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 993  Solved: 595[Submit][St ...

  4. 手把手教做Excel直方图

    手把手教做Excel直方图 2017-10-05  作者:ExcelHome  阅读:71968次   直方图是用于展示数据的分组分布状态的一种图形,用矩形的宽度和高度表示频数分布,通过直方图,用户可 ...

  5. 删除outlook配置信息

    1.输入“Win+R”组合键,在弹出的窗口中输入:control,打开控制面板 2.找到“邮件”选项,并单击 3.在弹出的窗口中,单击“显示配置文件”选项,删除配置文件夹,OK.

  6. oracle解惑

    1. 先在google, 论坛,metalink, online document 里搜索.     在这里提供Oracle 一些常见的连接地址,包括Oracle 下载地址,Oracle 对个人用是免 ...

  7. 一款纯html5实现的时钟

    今天给大家分享一款非常漂亮的纯html5实现的时钟.整个界面都由html5绘制而成.一起看下效果图: 在线预览   源码下载 实现的代码. html代码: <div class="co ...

  8. imx lcd HV和DE模式转换

    有些时候拿到的lcd手册中关于芯片的时序使用的DE模式的,而imx6内核中使用的参数设置趋势HV模式,应此就需要将DE模式的参数转化为HV模式. 参考链接: https://community.nxp ...

  9. ssh免密码登录的几个注意事项

    1, authorized_keys文件中每个公钥占一行,不能分成多行. 2,文件夹默认权限为600 3,如果遇到奇怪的问题,可以把.ssh/文件全部删掉,重新用ssh-keygen生成.

  10. linux下解压 tar.bz2

    tar xvfj xxx.tar.bz2 转自: http://www.360doc.com/content/12/0907/16/8006573_234845810.shtml