python进阶(4)文件操作_Silent丿丶黑羽的博客-程序员秘密

技术标签: python  java  os  linux  windows  

文件操作

文件操作主要包括对文件内容的读写操作,这些操作是通过文件对象实现的,通过文件对象可以读写文本文件和二进制文件

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

open()函数共有8个参数,其中参数file和mode是最为常用的,其他参数一般情况下很少使用,下面分别说一下这些参数的含义
1.file参数
file参数是要打开的文件,可以是字符串或整数。如果file是字符串表示文件名,文件名可以是相对当前目录的路径,也可以是绝对路径;如果file是整数表示文件描述符,文件描述符指向一个已经打开的文件
2.mode参数
设置打开模式,二进制文件设置rb,wb,xb,ab,如果是文本文件,则设置r,w,x,a

  • r:只读模式打开文件(默认)
  • w:写入模式打开文件,会覆盖已经存在的文件
  • x:独占创建模式,文件不存在时创建并以写入模式打开,如果文件已存在则抛出异常
  • a:追加模式,如果文件存在,则写入时内容追加到文件末尾
  • b:二进制模式
  • +:更新模式
  • t:文本模式(默认)

3.buffering参数
buffering是设置缓冲区策略,默认值为-1,当buffering=-1时系统会自动设置缓冲区,通常是4096或8192字节;当buffering=0时关闭缓冲区,关闭缓冲区时数据直接写入文件中,这种模式主要用于二进制文件的写入操作;当buffering>0时,buffering用来设置缓冲区字节大小

4.encoding
设置文件编码

5.errors
用来指定编码发生错误时如何处理

6.newline
用来设置换行模式

文本文件读写

  • read(size=-1):从文件中读取字符串,size限制最多读取的字符数,size=-1时没有限制,读取全部内容
  • redline(size=-1):读取到换行符或文件尾并返回单行字符串,如果已经到文件尾,则返回一个空字符串,size是限制读取的字符数,size=-1时没有限制
  • readlines(hint=-1):读取文件数据到一个字符串列表中,每一个行数据是列表的一个元素,hint是限制读取的行数,hint=-1时没有限制
  • write(s):将字符串s写入文件,并返回写入的字符数
  • writelines(lines):向文件中写入一个列表,不添加行分隔符,因此通常为每一行末尾提供行分隔符
  • flush():刷新写缓冲区,数据会写入到文件中

二进制文件读写

  • read(size=-1):从文件中读取字节,size限制最多读取的字节数,size=-1时没有限制,读取全部字节
  • redline(size=-1):从文件中读取并返回一行,size是限制读取的字节数,size=-1时没有限制
  • readlines(hint=-1):读取文件数据到一个列表中,每一个行数据是列表的一个元素,hint是限制读取的行数,hint=-1时没有限制
  • write(s):写入b字节,并返回写入的字符数
  • writelines(lines):向文件中写入一个列表,不添加行分隔符,因此通常为每一行末尾提供行分隔符
  • flush():刷新写缓冲区,数据会写入到文件中

os模块

Python对文件的操作是通过文件对象实现的,如删除文件、修改文件名,创建目录,删除目录和遍历目录,可以通过Python的os模块实现

  • os.rename(src, dst):修改文件名,src是源文件,dst是目标文件,它们都可以是相对路径或者绝对路径
  • os.remove(path):删除path所指的文件,如果path是目录,则会引发OSError
  • os.mkdir(path):创建path所指的目录,如果目录已存在,则会引发FileExistsError
  • os.rmdir(path):删除path所指的目录,如果目录非空,则会引发OSError
  • os.walk(top):遍历top所指的目录树,自顶向下遍历目录树,返回值是一个三元组(目录路径,目录名列表,文件名列表)
  • os.listdir(dir):列出指定目录中的文件和子目录
    常用的属性有以下两种
  • os.curdir属性:获得当前目录
  • os.pardir属性:获得当前父目录

os.path模块

  • os.path.abspath(path):返回path的绝对路径
  • os.path.basename(path):返回路径的基础名部分,如果path是指向一个文件,则返回文件名,如果path指向的是一个目录,则返回最后目录名
  • os.path.dirname(path):返回path路径中目录部分
  • os.path.exists(path):判断path文件是否存在
  • os.path.isfile(path):如果path是文件,则返回True
  • os.path.isdir(path):如果path是目录,则返回True
  • os.path.getatime(path):返回最后一次的访问时间,返回值是一个UNIX的时间戳,如果文件不存在或无法访问,则引发OSError
  • os.path.getmtime(path):返回最后修改时间,返回值是一个UNIX的时间戳,如果文件不存在或无法访问,则引发OSError
  • os.path.getctime(path):返回创建时间,返回值是一个UNIX时间戳,如果文件不存在或无法访问,则引发OSError
  • os.path.getsize(path):返回文件大小,以字节为单位,如果文件不存在或无法访问,则引发OSError
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43880991/article/details/116220979

智能推荐

java打印Excel表格_浴缸灬的博客-程序员秘密

这里用servlet简单介绍一下java打印报表1.无合并行/列package weaver.xhyy.servlet;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.Input...

springboot跨服务器文件上传,关于springboot 中使用httpclient或RestTemplate做MultipartFile文件跨服务传输的问题..._LlalyLau刘雅俐的博客-程序员秘密

大家好,因为近期做需求中遇到了文件上传这个东西,而且我这个还是跨服务去传输文件的所以我这边使用了httpclient和RestTemplate去做,但是最后还是用的httpclient。feign和RestTemplate在超大文件下会OOM所以适用于小文件传输我这边测试的在1G以下。httpclient好像是无限哈哈哈。(具体多少大家有时间可以去测一下)1.被调用服务的Controller1.这...

Android 网页抓取(实现新闻客户端)_android爬取网页新闻_000wen_Android的博客-程序员秘密

Android 网页抓取(实现新闻客户端)文章摘自:http://gqdy365.iteye.com/blog/2104046如何实现从各大网抓取新闻并经过格式处理现实到我们的新闻客户端呢?Android客户端抓取并解析网页的方法我用到的有两种:一、用jsoup没仔细研究,网上有类似的,可以参考这两位兄弟的:http://decentway.iteye.

宏病毒的研究与实例分析03——宏病毒处理篇_鬼手56的博客-程序员秘密

文章目录宏病毒处理思路破坏宏标志宏清除脚本手工清理宏(针对* .DOCM和* .XLSM文档)替换宏代码说明在前一章我们解析了宏病毒的二进制格式,本篇紧跟上文,利用宏病毒的二进制格式清除宏病毒。宏病毒处理思路破坏宏标志在解析OLE文件时,我们介绍过Directory,其中其偏移0x42H这个字节的表示DirectoryEntry的类型Type。0为非法,1为目录(storage),2为节点...

基于STC89C52的智能小车——蓝牙遥控篇_FEWGRG的博客-程序员秘密

蓝牙遥控是依靠单片机的串口通讯来实现的功能。这周我主要学习的内容是串口通讯。在完成学习后我用之前买避障小车时顺便买的蓝牙模块做了一个升级版智能小车,它可以通过蓝牙模块实现避障模式与蓝牙遥控模式的切换以及速度的调整。蓝牙模块的接线:将vcc与gnd接在单片机最小系统的5v供电口上,将txd和rxd分别接在单片机的rxd与txd上下面是程序(头文件之前的笔记中有,在此不做赘述了)#include <REGX52.H>#include "direction.h"#include "cd.h"

第六章文件管理_Xzzz2020的博客-程序员秘密

文章目录文件及其逻辑结构顺序文件索引文件索引顺序文件直接文件和哈希文件目录的要求文件的物理结构(***)连续分配链接分配索引分配空闲空间管理空闲表法空闲链表法位视图法(***)成组链表法文件系统软件模型对象及其属性对对象操纵和管理的软件集合文件系统接口文件共享课本习题题目练习文件及其逻辑结构文件概念:由创建者所定义、具有文件名的一组相关元素的集合,可分为结构文件和无结构文件两种。文件逻辑结构概念:文件的逻辑结构是从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构,它独立于文件的物理

随便推点

基本的 Python socket 模块_weixin_30412577的博客-程序员秘密

ocket 模块Socket 模块提供了 UNIX 程序员所熟悉的基本网络服务(也称为 BSD API)。这个模块中提供了在构建 socket 服务器和客户机时所需要的所有功能。这个 API 与标准的 C API 之间的区别在于它是面向对象的。在C中,socket描述符是从socket调用中获得的,然后会作为一个参数传递给BSD API函数。在Python中,socket 方法会向应用so...

[pycharm] 行号栏太宽_pycharm里行号太宽怎么_ASR_THU的博客-程序员秘密

行号栏太宽会挤占屏幕,进入setting设置取消gutter icons:新的行号栏:

Windows画图白板源码 C#编程电子白板_shangdaoxi的博客-程序员秘密

 DrawTools,用c#开发的一款小巧实用的绘图软件。此资源是其详细的源代码,采用C#2005开发,希望给大家提供参考!如果有爱好这方面的朋友可以加我好友,大家一起讨论 http://hi.csdn.net/link.php?url=http://shangdaoxi.download.csdn.net

学习笔记:MIPS 交叉编译GLIB_glib mips 架构_wch3535的博客-程序员秘密

<br />1、echo ac_cv_type_long_long=yes>mips-linux.cache;echo glib_cv_long_long_format=ll>>mips-linux.cache;echo glib_cv_stack_grows=no>>mips-linux.cache;echo glib_cv_uscore=no>>mips-linux.cache;echo ac_cv_func_posix_getpwuid_r=yes>>mips-linux.cache;echo ac_

测试TensorFlow是否安装成功_DilrabaDilmurat的博客-程序员秘密

(base) C:\Users\联想&gt;PythonPython 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32Type "help", "copyright", "credits" or "license" for more information.Failed calling sys.__interactivehook__Traceback (most.

单源最短路径---Dijkstra算法_fuckguidao的博客-程序员秘密

有这样一道题:在一个图(如图所示)中,一共有四个点:1 2 3 4这四个点之间各有相连,且每条边都有自己的权值。现在小明在点1上,他想要到3去,请问最短路径是多少。很容易得到该图的邻接矩阵。我们建立一个二维数组a。a[i][j],i表示 起点,为行,j表示终点,为列。将相应的权值传入其中,如果从一个 点到另一个点不通,就认为其权值为无限例如(1-》2)为2,则a...

推荐文章

热门文章

相关标签