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方法,所以说无论打开文件是否出错都能自动正确的 ...
随机推荐
- 【Unity与23种设计模式】责任链模式(Chain of Responsibility)
GoF中定义: "让一群对象都有机会来处理一项请求,以减少请求发送者与接收者之间的耦合度.将所有的接受对象串联起来,让请求沿着串接传递,直到有一个对象可以处理为止." 举个现实中的 ...
- 使用c#对MongoDB进行查询(1)
1.BsonDocument对象 在MongoDB.Bson命名空间下存在一个BsonDocument类,它是MongoDB的文档对象,代表着MongoDB中不规则数据一条条实体模型.可以使用Bson ...
- 关于IPFS的热门问题
最近小编在公众号收到了一些提及比较高的问题,今天总结一下统一回答 目前网络上有一些对ipfs的解读五花八门,各式各样,有看好的,也有打击的,总之一项新技术诞生之初遇到的问题IPFS都遇到了. 问题 ...
- Ubuntu修改密码之后无法登录
问题:Ubuntu修改密码之后无法登录,停留在登录界面,输入正确的密码之后,画面一闪又回到了登录界面. 解决:ctrl+alt_f1进入终端,输入用户名和密码,$cd /home/userXXX &a ...
- generator生成器iterator遍历器和yield
generator方法()返回一个iterator 使用generator时永远先去调用generator()方法 for of对iterator的调用过程(babel参照) 1,_iterator. ...
- python web开发-flask中日志的使用
Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...
- Gradle-----搭建简单的Gradle项目
GroupId 项目所在组信息 ArtifactId 项目名称 Version 项目的版本信息
- 笔记:Spring Cloud Ribbon 客户端负载均衡
Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,基于 Netflix Ribbon 实现,通过Spring Cloud 的封装,可以让我们轻松的将面向服 ...
- poj-2909-哥德巴赫猜想
Description For any even number n greater than or equal to 4, there exists at least one pair of prim ...
- fail2ban 防止ssh暴力破解
1.环境 CentOS 7 2.在线安装 yum install -y epel-release yum install -y fail2ban fail2ban 结构 /etc/fail2ban ...