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方法,所以说无论打开文件是否出错都能自动正确的 ...
随机推荐
- 面向对象设计模式_命令模式(Command)解读
在.Net框架中很多对象的方法中都会有Invoke方法,这种方法的设计实际是用了设计模式的命令模式, 模式图如下 其核心思路是将Client 向Receiver发送的命令行为进行抽象(ICommand ...
- UML类图二
在软件系统中,类并不是孤立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式. 1. 关联关系 关联(Association)关系是类与类之间最常用的一种关系, ...
- linux下Tomcat 安装后执行startup.sh,出现– Cannot find …bin/catalina.sh
linux下Tomcat 安装后执行startup.sh,出现– Cannot find …bin/catalina.sh 是因为权限不够,执行以下命令就可以: chmod +x startup.sh ...
- ava集合---ArrayList的实现原理
一.ArrayList概述 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存 ArrayList不是线程安全的,只能用在单线程环境下,多 ...
- 深入理解Android中View
文章目录 [隐藏] 一.View是什么? 二.View创建的一个概述: 三.View的标志(Flag)系统 四.MeasureSpec 五.几个重要方法简介 5.1 onFinishInflate ...
- jdk 环境配置踩坑
其实在网上已经有很多环境配置的介绍了.不过我还是想用切身经历告诉大家这里面可能遇到的坑. 首先,先给大家讲一下JAVA_HOME,path,CLASSPATH JAVA_HOME 指向的是JDK的安装 ...
- Java源码之HashMap
一.HashMap和Hashtable的区别 (1)HashMapl的键值(key)和值(value)可以为null,而Hashtable不可以 (2)Hashtable是线程安全类,而HashMap ...
- 《统计学习方法》P89页IIS的中间步骤Zw+δ(X)/Zw(X)的推导
共有两个方法:
- [福州大学]W班平时成绩排名
评分链接 个人作业 第一次作业 http://www.cnblogs.com/1qazse4/p/7506448.html 第二次作业 http://www.cnblogs.com/1qazse4/p ...
- [福大软工教学] W班 第1次成绩排行榜
作业地址 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/837 作业要求 (1)回想一下你初入大学时对 ...