文件

  • 长久保存信息的一种数据信息集合
  • 常用操作
    • 打开关闭(文件一旦打开,需要关闭操作)
    • 读写内容
    • 查找

1. open 函数

  • 负责打开文件
  • open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    • 第一个参数: 必须有,表示文件的路径和名称
    • mode:表明文件用什么方式打开
参数 释义
r 以只读方式打开(默认
w 写方式打开,会覆盖以前的内容
x 创建方式打开,如文件已经存在,报错
a a for append,以追加的方式对文件内容进行写入
b b for binary,二进制方式写入
t 文本方式打开(默认
+ 可读写
U universal newline mode (deprecated)
>>> f = open("text.txt", 'w')  # 使用了 w,若目录中没有所指定的文件,会先自动创建
>>> f.close() # f 也称“文件句柄”
>>>

2. with 语句

  • with 语句使用的技术是一种称为上下文管理协议的技术(ContextManagementProtocal)
  • 自动判断文件的作用域,自动关闭不再使用的已打开的文件句柄
>>> with open("text.txt") as f:
... pass
...
>>>

3. 先写再读

  • 上面新建了一个 text.txt,别浪费了

3.1 写

3.1.1 write(string)

  • 向文件写入一个字符串或字节流
  • 每次写入后,都会记录一个“写入指针”
  • 该方法可以反复调用,每次都在上回记录的“写入指针”后写入内容,直至文件被关闭
>>> with open("text.txt", 'a') as f:
... f.write("风急天高猿啸哀\n")
... f.write("渚清沙白鸟飞回\n")
... f.write("无边落木萧萧下\n")
... f.write("不尽长江滚滚来\n")
...
8
8
8
8
>>>

3.1.2 writeline(lines)

  • lines 代表一个列表
  • 功能:直接将列表类型的各元素连接起来写入文件
>>> lines = ["万里悲秋常作客\n", "百年多病独登台\n", "艰难苦恨繁霜鬓\n", "潦倒新停浊酒杯\n"]
>>> with open("text.txt", 'a') as f:
... f.writelines(lines)
...
>>>

3.1.3 两种方法的区别

  • write 函数的参数只能是字符串
  • writerlines 的参数可以是字符串,也可以是字符序列

3.2 读

3.2.1 read()

  • f.read(size=-1)
  • 从文件中读入整个文件内容
  • 参数可选,如果给出,则读入前 size 长度的字符串或字节流
>>> with open("text.txt") as f:
... f.read()
...
'风急天高猿啸哀\n渚清沙白鸟飞回\n无边落木萧萧下\n不尽长江滚滚来\n万里悲秋常作客\n百年多病独登台\n艰难苦恨繁霜鬓\n潦倒新停浊酒杯\n'
>>>
>>> f = open("text.txt")
>>> f.read(8)
'风急天高猿啸哀\n'
>>> f.read(8)
'渚清沙白鸟飞回\n'
>>> f.close()
>>>

3.2.2 readline()

  • f.readline(size = -1)
  • 从文件中读入一行内容
  • 参数可选,如果给出,则读入该行前 size 长度的字符串或字节流
>>> f = open("text.txt")
>>> f.readline()
'风急天高猿啸哀\n'
>>> f.readline()
'渚清沙白鸟飞回\n'
>>> f.close()
>>>

3.2.3 readlines()

  • f.readlines(hint=-1)
  • 从文件中读入所有行,以每行为元素形成一个列表
  • 参数可选,如果给出,读入 hint
>>> with open("text.txt") as f:
... for line in f.readlines():
... print(line, end='')
...
风急天高猿啸哀
渚清沙白鸟飞回
无边落木萧萧下
不尽长江滚滚来
万里悲秋常作客
百年多病独登台
艰难苦恨繁霜鬓
潦倒新停浊酒杯
>>>
  • 文件句柄可以强制转成 list
>>> with open("text.txt") as f:
... for line in list(f):
... print(line, end='')
...
风急天高猿啸哀
渚清沙白鸟飞回
无边落木萧萧下
不尽长江滚滚来
万里悲秋常作客
百年多病独登台
艰难苦恨繁霜鬓
潦倒新停浊酒杯
>>>

4. “位置”的查询与移动

4.1 tell()

  • 显示文件“读写指针”的当前位置
>>> f = open("text.txt")
>>> f.tell()
0
>>> f.readline()
'风急天高猿啸哀\n'
>>> f.tell()
16
>>> f.read(4)
'渚清沙白'
>>> f.tell()
24
>>>
  • read 与 tell 使用的不是一个单位

4.2 seek(cookie, whence=0)

  • 改变当前文件操作指针的位置

  • whence

    • 0:文件开头(默认
    • 1:从文件当前位置开始偏移
    • 2:文件结尾
  • 移动的单位是字节(byte)

  • 一个汉字由若干个字节构成,一般为 2,也有例外

  • 返回文件只针对当前位置

>>> f = open("text.txt")
>>> f.read(4)
'风急天高'
>>> f.tell()
8
>>>
>>> f.seek(0)
0
>>> f.readline()
'风急天高猿啸哀\n'
>>>
>>> f.seek(8, 0)
8
>>> f.readline()
'猿啸哀\n'
>>>

[Python3] 040 文件 一般使用的更多相关文章

  1. Python3 判断文件和文件夹是否存在、创建文件夹

    Python3 判断文件和文件夹是否存在.创建文件夹 python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod(“test.txt”) 创建空文件  ...

  2. Python3:文件读写

    Python3:文件读写 open f = open('filename','r') # 读模式 f = open('filename','w') # 写模式 f = open('filename', ...

  3. Python2.X和Python3.X文件对话框、下拉列表的不同

    Python2.X和Python3.X文件对话框.下拉列表的不同 今天初次使用Python Tkinter来做了个简单的记事本程序.发现Python2.x和Python3.x的Tkinter模块的好多 ...

  4. python3.7 文件操作

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 文件操作 # r 只读,默认打开方式,当文件不存在时会报错 # ...

  5. 笔记||Python3之文件的读写

    [文件的读模式]            文件的对象:文件的读写通过文件操作对象进行. Python2  -----  File Python3  -----  TextIOWrapper       ...

  6. python3中文件/IO编程

    python3的文件操作可谓是我见过所有语言中最舒服的,那我们来一起看一下py3中的文件操作. 1:文件的打开方式有以下几种: 注:以上图表参考菜鸟教程 2:定位读写文件  f = open(&quo ...

  7. Python3 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下

    #!/usr/bin/env python3 # -*- coding:utf8 -*- # @TIME :2018/9/17 9:02 # @Author:dazhan # @File :copyf ...

  8. python3替换文件的内容

    目标:替换文件中的字符串内容   方法1:使用fileinput包   import fileinput for line in fileinput.input(“要修改的文件名", inp ...

  9. Python3 移动文件——合集

    文件/文件夹操作头文件 import os import shutil 参考 Python3批量移动指定文件到指定文件夹

随机推荐

  1. convert:图片转pdf失败

     造冰箱的大熊猫@cnblogs 2019/1/21 1.环境 操作系统/Ubuntu 16.04.5 LTS,内核/4.15.0-43-generic,convert/ImageMagick 6.8 ...

  2. White Sheet

    C - White Sheet 思路:先看代码,分成了四个条件.第一个和第二个表示的都是当白矩形存在某个黑矩形内部的情况. 另外就是:白矩形位于两个黑矩形的并集区域. 即可分为两种情况,一种是白矩形位 ...

  3. Vue_(组件通讯)父组件向子组件传值

    Vue组件 传送门 父组件向子组件传值:父组件通过属性向下传值的方式和子组件通信: 使用步骤: 1.定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件 2.准备获取数据:c ...

  4. linux命令---vi编辑器快速定位行数

    linux命令—vi编辑器快速定位行数.删除当前行.和删除当前行后面的全部内容 1.vi 编辑器如何快速定位到第N行 命令方式下 :n http://bbs.chinaunix.net/thread- ...

  5. Zjoi2010排列计数Perm

    这东西还是挺有思想的,道听途说一些东西,问问DuanYue同志,然后自己打表画树推了推,就搞出来了. 首先根据p i>p i/2(向下取整)这种形式,如果线段树学的好的人,一定能看出来,这是在唯 ...

  6. DB 分库分表(2):全局主键生成策略

    DB 分库分表(2):全局主键生成策略 本文将主要介绍一些常见的全局主键生成策略,然后重点介绍flickr使用的一种非常优秀的全局主键生成方案.关于分库分表(sharding)的拆分策略和实施细则,请 ...

  7. HearthBuddy的plugin加载

    // Hearthbuddy.Windows.MainWindow // Token: 0x060001FF RID: 511 RVA: 0x0008951C File Offset: 0x00087 ...

  8. Python中列表操作进阶及元组

    列表高级操作 一.遍历列表 >>> ls=['a','d','it'] >>> for val in ls: ... print (val) ... a d it ...

  9. (转)常用 HTTP 状态码对照表

    Code 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须 ...

  10. git add时遇到类似fatal: Path 'XXX' is in submodule 'XXX'错误提示如何解决?

    答:示例如下: fatal: Pathspec 'Vundle.vim/autoload/vundle.vim' is in submodule '.vim/bundle/Vundle.vim' 解决 ...