[Python3] 040 文件 一般使用
文件
- 长久保存信息的一种数据信息集合
- 常用操作
- 打开关闭(文件一旦打开,需要关闭操作)
- 读写内容
- 查找
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 文件 一般使用的更多相关文章
- Python3 判断文件和文件夹是否存在、创建文件夹
Python3 判断文件和文件夹是否存在.创建文件夹 python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod(“test.txt”) 创建空文件 ...
- Python3:文件读写
Python3:文件读写 open f = open('filename','r') # 读模式 f = open('filename','w') # 写模式 f = open('filename', ...
- Python2.X和Python3.X文件对话框、下拉列表的不同
Python2.X和Python3.X文件对话框.下拉列表的不同 今天初次使用Python Tkinter来做了个简单的记事本程序.发现Python2.x和Python3.x的Tkinter模块的好多 ...
- python3.7 文件操作
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 文件操作 # r 只读,默认打开方式,当文件不存在时会报错 # ...
- 笔记||Python3之文件的读写
[文件的读模式] 文件的对象:文件的读写通过文件操作对象进行. Python2 ----- File Python3 ----- TextIOWrapper ...
- python3中文件/IO编程
python3的文件操作可谓是我见过所有语言中最舒服的,那我们来一起看一下py3中的文件操作. 1:文件的打开方式有以下几种: 注:以上图表参考菜鸟教程 2:定位读写文件 f = open(&quo ...
- Python3 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
#!/usr/bin/env python3 # -*- coding:utf8 -*- # @TIME :2018/9/17 9:02 # @Author:dazhan # @File :copyf ...
- python3替换文件的内容
目标:替换文件中的字符串内容 方法1:使用fileinput包 import fileinput for line in fileinput.input(“要修改的文件名", inp ...
- Python3 移动文件——合集
文件/文件夹操作头文件 import os import shutil 参考 Python3批量移动指定文件到指定文件夹
随机推荐
- 强制类型转换之String类型
㈠布尔(Boolean)类型 布尔值只有两个,主要用来做逻辑判断 true 表示真 : false 表示假 使用typeof检查一个布尔值时,会返回boolean ㈡Null和Unde ...
- Mysql入门-对表数据的增删改查
这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mysql的时候, ...
- jquery button选择器 语法
jquery button选择器 语法 作用::button 选择器选取类型为 button 的 <button> 元素和 <input> 元素.大理石平台价格表 语法:$(& ...
- Java进阶知识02 Struts2下的拦截器(interceptor)和 过滤器(Filter)
一.拦截器 1.1.首先创建一个拦截器类 package com.bw.bms.interceptor; import com.opensymphony.xwork2.ActionContext; i ...
- 洛谷 P1135 奇怪的电梯 (dfs)
题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮:开 ...
- delphi请求http接口并上传附件
实现附件的上传:需要使用TIdMultiPartFormDataStream控件, uses IdMultipartFormData; 例子: procedure TClientForm.Button ...
- Centos 7禁止ftdi_sio模块
$ dmesg[ 3305.097301] usb 1-1: USB disconnect, device number 7[ 3306.883704] usb 1-1: new high-speed ...
- jquery文章链接
好文链接 1.jQuery是js的一个库,封装了js中常用的逻辑: 2.调用jQuery: (1).本地调用,在script标签的src属性里写上jQuery文件的地址. (2).使用CDN调用jQu ...
- Java线程之Dump
什么是线程dump Java Thread dump记录了线程在jvm中的执行信息,可以看成是线程活动的日志.Java线程转储文件有助于分析应用程序和死锁情况中的瓶颈. 如何获取线程转储文件 在这里, ...
- nvl(sum(字段),0) 的时候,能展示数据0,但是group by 下某个伪列的时候,查不到数据(转载)
今天碰到一个比较有疑惑的问题,就是在统计和的时候,我们往往有时候查不到数据,都会再加个 nvl(sum(字段),0) 来显示这个字段,但是如果我们再加个group by ,就算有加入这个 nvl(nu ...