Python系列-python文件操作
原链接:https://blog.csdn.net/m0_37745438/article/details/79573414
python提供了一系列方法来对文件进行读取、写入等操作
一、打开文件的方法
python 提供open方法来打开文件
1 open方式打开文件
你在操作的过程中可能会忘了关闭文件而释放资源。那么我们可以通过下面的方式让python
自动关闭释放文件,它就是with ....open
通过这种方法,当执行完with语句后系统将自动释放打开的文件。
二 文件打开模式
对于open(filename,arg) 中文件打开模式arg参数有以下几种方式:
| 序号 | 参数 | 说明 |
|---|---|---|
| 1 | r | 只读 |
| 2 | r+ | 已读写的方式打开文件 |
| 3 | w | 已写入的方式打开文件,先删除文件原有内容,再写入新的内容。如果文件不存在,则创建一个新文件 |
| 4 | w+ | 已读写的方式打开文件,先删除文件原有内容,再写入新的内容。如果文件不存在,则创建一个新文件 |
| 5 | a | 已写入的方式打开文件,追加文件,不存在则创建一个新的文件 |
| 6 | a+ | 已读写的方式打开文件,追加文件,不存在则创建一个新的文件 |
| 7 | b | 已二进制模式打开文件,可与r,w,a一起结合使用 |
| 8 | U | 支持所有换行符,\n \r \r\n 都表示换行 |
三 文件操作函数
文件读操作
1. read() 读取文件中的所有内容,返回结果为字符串<str>
int为读取的长度,在 python 3.x 中read()带参数是读取的为字符长度
python 3.x:
2. readlines() 读取文件的所有内容,返回结果为列表类型<list>
with open(openfile, 'r') as f:
a = f.readlines()
print(type(a))
print(a)
结果:
<class 'list'>
[']
3. readlines() 读取文件一行内容
4. tell() 返回当前指针在文件内容中的位置
5.seek(arg) 文件指针,arg参数为整型,代表在文件中的指针;seek(0) 文件开头,seek(1) 当前位置, seek(2)文件末尾
with open(openfile, 'r') as f:
a = f.readline() # 读取一行内容
print(a)
print(f.tell()) # 现在指针的位置
f.seek(0) # 返回到文件开始位置
a = f.readline() # 又从头开始读了
print(a)
注:seek方法对a, a+模式写文件时是不管用的,因为是追加模式,默认都会指向文件末尾
下面看一个实际应用例子,实现tail效果
import time
f = open('/home/ws/test','r')
f.seek(2)<span style="white-space:pre"> </span># 定位到文件末尾
while True:
currline = f.tell() # 获取当前位置
line = f.readline() # 读入内容
if not line: # 如果当前无信息
f.seek(currline) # 继续定位在最末尾
else:
print(line) # 输出内容
time.sleep(2)
四 文件写操作
6. write() 写文件,括号中的内容必须为str字符串类型,一次写入到文件中,如果字符串中有\n写入文件时也会换行
7. writeline() 写文件,除了可以写字符串类型外,还支持列表类型
8.truncate() 文件截断操作,将指针后面的所有内容截取掉
文件常用操作技巧:
1. 逐行读取文件内容
with open(openfile, 'r') as f:
for line in f:
print(line.strip())
2. 使用stat 获取文件的信息
通过stat模块可以获取文件的一些基本信息
import os
import stat
openfile = os.path.dirname(os.path.abspath("__file__")) + "\\README.md"
file_stat = os.stat(openfile) # return tuple
print("file_stat info: " ,file_stat)
print("file_stat mode: " , file_stat.st_mode)
print("check file is dir(stat): ", stat.S_ISDIR(file_stat.st_mode))
print("check file is file (os): ", os.path.isfile(openfile))
print("check file is file (stat):", stat.S_ISREG(file_stat.st_mode))
结果:
<span style="color:#ff6666;background-color: rgb(255, 255, 255);">file_stat info: os.stat_result(st_mode=33206, st_ino=844424930202057, st_dev=2417903304, st_nlink=1, st_uid=0, st_gid=0, st_size=9, st_atime=1452135600, st_mtime=1452135607, st_ctime=1452135600)
file_stat mode: 33206
check file is dir(stat): False
check file is file (os): True
check file is file (stat): True</span>
stat 模块常用函数:
stat.S_ISREG(st_mode) == os.path.isfile(filename) # 判断是否一般文件
stat.S_ISDIR(st_mode) == os.path.isdir(filename) # 判断是否为文件夹
stat.S_ISLNK(st_mode) == os.path.islink(filename) # 判断是否链接文件
stat.S_ISSOCK(st_mode) # 判断是否套接字文件
stat.S_ISFIFO(st_mode) # 判断是否命名管道
stat.S_ISBLK(st_mode) # 判断是否块设备
stat.S_ISCHR(st_mode) # 判断是否字符设置
stat 模块常用属性
openfile = os.path.dirname(os.path.abspath("__file__")) + "\\README.md"
file_stat = os.stat(openfile) # return tuple
print("st_mode:", file_stat.st_mode) # 权限模式
print("st_ino:", file_stat.st_ino) # inode number
print("st_dev:", file_stat.st_dev) # device
print("st_size:", file_stat.st_size) # 文件的大小,以位为单位
print("uid:", file_stat.st_uid) # 所有用户的user id
print("gid:", file_stat.st_gid) # 所有用户的group id
print("st_atime:", file_stat.st_atime) # 文件最后访问时间
print("st_mtime:", file_stat.st_mtime) # 文件最后修改时间
print("st_ctime:", file_stat.st_ctime) # 文件创建时间
结果:
st_mode: 33206
st_ino: 844424930202057
st_dev: 2417903304
st_size: 9
uid: 0
gid: 0
st_atime: 1452135600.2344666
st_mtime: 1452135607.5388844
st_ctime: 1452135600.2344666
3 从一个文件写入到另一文件
openfilepath = os.path.dirname(os.path.abspath("__file__"))
file1 = openfilepath + "\\1.txt"
file2 = openfilepath + "\\2.txt"
with open(file1,'r') as f1,open(file2,'a+') as f2:
f2.write(f1.read())
Python系列-python文件操作的更多相关文章
- Python系列之文件操作、冒泡算法、装饰器、及递归
文件处理 python对文件进行读写操作的方法与具体步骤,包括打开文件.读取内容.写入文件.文件中的内容定位.及关闭文件释放资源等 open().file(),这个两函数提供了初始化输入\输出(I\O ...
- python os&shutil 文件操作
python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
- Python的高级文件操作(shutil模块)
Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...
- Python入门篇-文件操作
Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- Python之常用文件操作
Python之常用文件操作
- python递归、collections系列以及文件操作进阶
global log 127.0.0.1 local2 daemon maxconn log 127.0.0.1 local2 info defaults log global mode http t ...
- Python学习系列之文件操作
Pyhton文件打开方式 with= open('文件路径','打开模式') as f:#PS:python3提供了with语句来帮我们自动调用close方法,所以说无论打开文件是否出错都能自动正确的 ...
随机推荐
- Java equals() 和hashCode()方法详解
Java的Object类中定义了equals方法,Object类中的equals方法源代码如下,从源代码中可以看出Object类中的equals方法是用来返回判断两个对象是否指向同一个对象(引用地址) ...
- VLOOKUP函数常用套路大全
今天和大家来说说VLOOKUP的那些事儿,深入了解一下VLOOKUP函数的各种用法,看看这位大众情人还藏着多少不为人知的秘密.函数的语法为:VLOOKUP(要找谁,在哪儿找,返回第几列的内容,精确找还 ...
- es6学习笔记--新数据类型Symbol
学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为 ...
- http.request的请求
var http=require('http'); var request=require('request'); var body = { "data":{ "id&q ...
- POJ1331 Multiply(strtol函数练习)
题目链接:http://poj.org/problem?id=1331 主要介绍strtol函数: long int strtol(const char *nptr,char **endptr,int ...
- 分析 webpack 打包后的代码
写在前面的:使用的 webpack 版本 3.0.0 一.开始 1. 准备 当前只创建一个文件 index.js,该文件作为入口文件,代码如下. console.log('hello, world') ...
- python实现维吉利亚密码加密(Vigenère cipher)
最近有个朋友问我关于维吉利亚密码如何用python实现加密,研究之后发现这是个挺好玩的东西,遂决定写篇博文记录一下. 一.何谓维吉利亚密码 第一列是密钥字母列,第一行是明文字母行.不难看出维吉利亚密码 ...
- 解决Oracle登录时出现无法处理服务名问题
1.首先找到客户端的tnsnames.ora文件,打开看看里面有没有配置相应的服务器名,服务器名就是你的数据库名: 2.如果有相应的服务器名,那就检查一下配置信息是否错误,如果没有就添加: 3.配置信 ...
- vue 源码学习----build/config.js
1. process 这个process是什么?为何都没有引入就可以使用了呢? process 对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程.作为一个对象,它对 ...
- 关于SELECT LAST_INSERT_ID()的使用规则
尊重个人劳动成果,转载请注明出处: http://blog.csdn.net/czd3355/article/details/71302441 首先我先解释以下在在映射文件中的代码是什么意思. < ...