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方法,所以说无论打开文件是否出错都能自动正确的 ...
随机推荐
- 使用text-overflow: ellipsis 处理文本溢的一个小问题
今天在做一个自定义 select多选 搜索的时候,有这样子的一个需求: 1.点击自定义的一个 选项内容框,下拉可多选项 2.多选项不允许换行,且父溢出拆剪,(单行)溢出部分使用 "...&q ...
- QTcreator打包发布可运行程序(基于QT5.7)
完成C++界面程序后,我们还需要对程序进行Release,然后进行打包,才可以直接运行.我在这期间绕了一个大弯,现在记录下来我的做法供参考. 正确步骤 第一步:将构建程序改为Release,然后构建项 ...
- Intellij +Maven 报错: Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
在intellij使用 Maven Project 测试时,运行test时看到log里的报错信息: -Dmaven.multiModuleProjectDirectory system propert ...
- JDK配置及tomcat部署
JDK配置及tomcat部署 2017-09-30-17:54:03 个人原创博客,转载请注明出处,作者,否则依法追究责任,文中引用了一些百度经验的图片,特此注明. 一,配置JDK:1.8.0_66版 ...
- 一个类似抖音 APP 拍摄按钮效果的控件
TouchButton 一个类似抖音 APP 拍摄按钮效果的控件 效果图预览 用法 <net.angrycode.library.TouchButton android:id="@+i ...
- angular的$scope的使用
1. 可以在scope中直接使用 // 监听日期变化 $scope.$watch('vaFilter.startEffectiveDate', function(newDate, oldDate, s ...
- 笔记:Eclipse 安装 Hibernate Tools
在线安装,要求 Eclipse Neon 4.6 版本和Java 8,在 Help > Install New Software,在打开的窗体中的 Work with 中输入URL地址" ...
- linux --> ubuntu和mac通过samba共享
ubuntu和mac通过samba共享 如果想快速配置,直接跳到第五步. 一.安装smb 执行下列命令 sudo apt-get install samba sudo apt-get install ...
- C#中的String类
一.String类的方法 1. Trim():清除字符串两端的空格 2. ToLower():将字符串转换为小写 3. Equals():比较两个字符串的值,bool 4. IndexOf(value ...
- 【django之权限组件】
一.需求分析 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,一个角色拥有若干权限.这样,就构造成& ...