文档章节

Python之文件操作及常用函数

小海岛
 小海岛
发布于 2017/09/10 17:06
字数 2415
阅读 1
收藏 0
点赞 0
评论 0

常见全局函数:

1.dir(nameStr):

常见系统变量:

1.sys.path:一个包含Python自动搜索文件的路径或目录的列表。可使用列表的操作方法修改、增加默认搜索路径。

一、模块

  1.创建模块:创建一个扩展名为.py的文件就相当于创建了一个模块,文件名即为模块名,文件中的内容即为模块所包含的内容。

  2.导入模块:import 模块名

  3.使用模块:模块名.变量名(可为普通变量或函数或类等)

  4.导入模块中的某个元素:from 模块名 import  变量。(可多级导入)

  5.导入模块中的所有元素:from 模块名 import *

注:245的区别:使用2方式时,引用模块中的元素需要使用模块名.变量名的形式,而45可直接使用变量名。

二、包

  1.创建包:

    (1)新建一个文件夹,文件夹名即为包名

    (2)在文件夹(包)中创建一个__init__.py文件。(这一步是必须的,不然构不成一个包,注意:init前后各两个下划线)

    (3)在文件夹中添加想包含在包中的模块。

    (4)在__init__.py中导入这些模块或模块中的元素。

  2.导入包:import 包名。

  3.使用包:同模块使用方法一样。

  4.from 包名 import *的使用:

三、文件操作

  1.常用全局内置函数(直接可用的函数,无需引用其他模块)

    (1)open(file,op):打开指定文件file,若文件不存在则创建。其中file为文件名,file的路径默认为程序所在的位置,也可指定file的路径。

      参数op:(1)“r”或无:若省略参数op,则只是简单打开文件,若文件不存在则会报错,写文件操作也会报错;

          (2)“w”:打开并可写文件。若文件已存在,则以前的内容将被清除。

          (3)“a”:向文件中追加文本。向已存在的文件中追加内容。

                                        如没有参数“w”则只是简单打开文件,如文件不存在则会报错。    如:a = open("test.txt","w"),a为test.txt的一个文件对象

    注:使用open函数打开并写文件时文件时,就算文件存在,Python也会先删除原有文件然后创建新文件,也即文件的内容也随之删除!

  2.文件操作函数(需要指定文件对象)

    (1)write(astring):向文件中写内容,写入的内容不会自动换行,但可使用换行符“\n”。如:a.write("one line"),此时文件test.txt中出现内容“one line”。

    (2)close():关闭文件对象。对一个文件的操作结束是调用。如:a.close()。

    (3)readline():从文本中读取一行文本,该函数返回一行的文本字符串,包括换行符“\n”。第一次使用返回文件的第一行文本,第二次返回第二行文本,依此类推。

             使用循环可遍历文件中的每一行文本。 如:line1 = a.readline() ->返回a对象所指文件的第一行文本。

    (4)read():返回文件中剩余的文本组成的多行字符串,若打开文件时调用则返回文件中的所有内容(即使用read()之前没有使用readline())。

    (5)readlines():返回由文件中剩余的文本(行)组成的列表,  遍历返回的列表即可得到每一行的内容。如:

              假设一个文本test.txt中包含2行内容:one   two

              a = open("test.txt"),lines = a.readlines(),print(lines)->["one\n","two\n"]

              for line in lines:#遍历文本

                print(line,len(line)) ->"one\n",4 注:换行符“\n”也包含在长度内,即比实际内容的长度多1

                          ->"two\n",4

  3.os模块常用函数:文件路径相关(使用前要导入os模块:import os)

   (1)os.path:与路径有关的模块,包含了路径操作相关的函数。由于路径也是一个字符串,因此,操作路径和操作字符串是一样的。

    1)os.path.isfile(filepath):检查路径是不是指向一个文件(注:不是指文件夹)。返回TRUE or FALSE。

      2)os.path.join(dir1,dir2):将目录名组合成路径。如:os.path.join("d","test") ->d\test.(不同系统下输出不完全一致)

    3)os.path.split(filepath):将路径filepath的最后一个组件(即目录名或文件名)提取出来。该函数返回包含两个项的元组(或两个值):

                   (最后一个组件的)父目录路径和最后一个组件。如:os.path.split("c:\\python\\test")->("c:\\python","test")。

      注:利用此函数可以用递归的方法将一个路径完全分解为目录名:

          def split_fully(path):

            parent,name = os.path.split(path)

            if name == “”: #当一个路径不能再被分解时,第二个值就会返回空字符串

              return (parent,) #返回一个元组

            else

              return split_fully(parent) +(name,)

          调用:split_fully("D:\\a\\b\\c") ->("D:\\","a","b","c")

    4)os.path.splitext(filename):将一个文件的名称和扩展名分开(即分离扩展名,从而判断文件类型)。

      如:s = os.path.splitext("test.txt")->s = ("test",".txt"),s[1]->可获得文件扩展名,若s[1]为空字符串,则为文件夹。

    5)os.path.normpath(path):规范或“清理“路径。如:os.path.normpath("c:\\a\\b\\t\\..\\c") ->"c:\a\b\c","清理"了”t\\..“ 。

    6)os.path.abspath(filename):将相对路径转化为绝对路径。函数不会检查路径是否存在。

    7)os.path.exists(path):检查某个路径是否存在,返回True or False。

    8)os.path.isdir(filepath):检查路径是不是指向一个目录(即文件夹)。同isfile对应。

    9)os.path.getsize(filepath):在不必打开或扫描某个文件(不是指文件夹)的情况下以字节为单位返回该文件的大小。

      注:1.若路径指向的是文件夹(即目录),则返回0;2.若传入的文件或路径不存在则报WindowsError错误。

    10)os.path.getmtime(filepath):获得文件上次被修改的时间。返回的值是从1970年到上次修改时间之间的秒数。

      注:可用函数time.ctime(seconds)将秒数转化为日期时间格式,在使用该函数前记得导入time模块:import time

   (2)os.listdir(path):返回一个目录下所有名称条目,包括文件和子目录等内容。若目录路径不存在则报WindowsError错误。

      注:1.返回的条目只是一个名称,没有包含路径,可以用os.path.join(path,条目名)得到相应条目的路径。

        2.可对返回的条目进行排序(其实就是列表排序):sorted(os.listdir(path)),默认排序规则:数字->大写字母->小写字母

   (3)os.chmod:文件权限相关的模块

  4.shutil模块常用函数:文件重命名、移动、复制、删除(使用前先导入shutil模块:import shutil)

   (1)shutil.move(src,dest):重命名或移动文件(而不是移动目录(即文件夹))。

      注:1)dest所指向的是一个文件,则为重命名;若指向的是一个目录(即文件夹)则为移动文件。

        2)src必须指向一个存在的文件,否则不会报错。重命名后的文件可为任意命名,甚至文件可不带后缀。

        3)os.rename(src,dest)也具有重命名和移动文件的功能,但不常用。

   (2)shutil.copy(src,dest):复制文件。可重新命名新文件。

   (3)删除文件:os.remove(file)。注:此方法不是shutil模块的方法。

四、目录操作:创建和删除目录(此处的目录可理解为Windows下的文件夹)

  1.os.mkdir(dir):创建目录,要创建的目录的父目录必须存在。

  2.os.makedirs(dir):创建目录,要创建的目录的父目录可不存在。若父目录不存在则创建父目录。<简单粗暴>

  3.os.rmdir(dir):删除目录,仅对空目录有效。若目录中文件则不能删除。

  4.shutil.rmtree(dir):删除目录,目录可不为空。【此函数慎用!】

 

五、通配

  1.含义:在指定目录中找出满足要求的文件  

  2.模块:glob

  3.通配函数:glob.glob(pattern),该函数接受一个模式作为参数,返回所有匹配的文件名和路径名列表。

    注:由于返回的文件包含路径,可以使用函数os.path.split(file)将路径和文件分离。

  4.常见通配符:

    (1)*:匹配0个或多个任意字符。如:m*(匹配所有以字符m开头的文件),*.m*(匹配所有后缀名以字符m开头的文件)。

    (2)?:匹配任意单个字符。如:???.txt(匹配恰好包含3个字符的文件.txt文件)。

    (3)[...]:匹配方括号中列出的任意一个字符。如:[abc]*(匹配以字符a或b或c开头的文件)。

    (4)[!...]:匹配不在方括号中列出的任意一个字符。如:*[!s](匹配文件名不以字符s结尾的文件)。

      注:方括号中也可使用表示某个范围的字符。如:[m-p](匹配m,n,o,p中任意一个字母);[!0-9](匹配非数字字符)

  5.区分大小写:通配一般是区分大小写的,如M*和m*匹配的内容是不同的。但在Windows下通配是不区分大小写的。

  6.glob.glob(dir)和os.listdir(dir)

    (1)os.listdir:列出指定目录下包含的文件,但不包括文件的路径,即返回的是相对路径。

    (2)glob.glob:可返回多个目录下满足匹配要求的文件,因为可在目录或子目录中指定通配符。

            如:glob.glob("*\\*.txt"):返回当前目录的所有子目录中扩展名为.txt的文件。

六、文件异常(IOError)

 

七、os中的异常(OSError)

本文转载自:

共有 人打赏支持
小海岛
粉丝 0
博文 5
码字总数 1201
作品 0
Python基础——装饰器、模块(0417)

一、Python基础——复习 1、字符串的常用操作 2、列表的常用操作 3、字典的常用操作 二、Python——装饰器:函数可以是变量 1、Python是一种面向对象的编程语言,在Python中所有的都可以是Pyt...

python初雪之路 ⋅ 04/17 ⋅ 0

Python中os与sys两模块的区别

前言 os与sys模块的官方解释如下: os: This module provides a portable way of using operating system dependent functionality. 这个模块提供了一种方便的使用操作系统函数的方法。 sys:...

xiaoge2016 ⋅ 04/22 ⋅ 0

python3.x与python2.x的区别汇总

python3.x与python2.7.x都是比较流行的版本,虽然建议现在的初学者开始学习python3.x的版本,但是还有很多的工程使用的是python2.7.x版本。观看代码的时候难免会出现一些问题。 在google上搜...

oldpan ⋅ 2017/10/10 ⋅ 0

Eric:Python的IDE之eric的简介、安装、使用方法之详细攻略——Jason Niu

Eric的简介 Eric是一个完整的Python编辑器和IDE,用Python编写。它是基于跨平台QT-UI工具包,集成了高度灵活的闪烁编辑器控件。它被设计成可用作为“每日”的快速和肮脏的编辑器,以及作为一...

qq_41185868 ⋅ 05/24 ⋅ 0

一个月入门Python爬虫,快速获取大规模数据

数据是创造和决策的原材料,高质量的数据都价值不菲。而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣、知乎:爬取优质答案,筛选出各话题下热门内容,探索...

Python开发者 ⋅ 04/25 ⋅ 0

你想要的Python面试都在这里了【315+道题】

写在前面 近日恰逢学生临近毕业,课程后期大家“期待+苦逼”的时刻莫过于每天早上内容回顾和面试题问答部分【临近毕业每天课前用40-60分钟对之前内容回顾、提问和补充,专挑班里不爱说话就的...

p柯西 ⋅ 06/12 ⋅ 0

PAI TensorFlow Q&A

PAI TensorFlow Q&A 目录 如何开通PAI的深度学习功能 如何支持多python文件脚本引用 如何上传数据到OSS 如何使用PAI读取OSS数据 如何使用PAI写入数据到OSS PAI平台关于Tensorflow的案例有哪些...

傲海 ⋅ 2017/10/30 ⋅ 0

Linux环境下的Anaconda安装及使用

Anaconda对于python就相当于Ubuntu对于Linux,即Anaconda是python的一个发行版,将python和许多常用的package打包,方便pythoners直接使用。像virtualenv、pyenv等工具管理虚拟环境,起到的作...

戴千岩 ⋅ 2017/09/24 ⋅ 0

Python基础面试题80问 Python自动化开发

为什么学习Python? 2. 通过什么途径学习的Python? 3. Python和Java、PHP、C、C#、C++等其他语言的对比? 4. 简述解释型和编译型编程语言? 5. Python解释器种类以及特点? 6. 位和字节的关...

zhouzhou2018 ⋅ 05/24 ⋅ 0

程序员必备,快速学习 Python 的全套14张思维导图(附高清版下载)

后台回复关键词 思维导图 可获取本文中的高清思维导图(PDF版) ML & AI∣一个有用的公众号 长按,识别二维码,加关注 获取更多精彩文章

micf435p6d221ssdld2 ⋅ 05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【elasticsearch】 随笔 Date datatype

一。时间类型的本质 首先json是没有时间类型的,对于es来说,时间类型的标示可以是下面三种情况 1.一个时间格式的字符串,如:"2014-11-27T08:05:32Z","2015-01-01" or "2015/01/01 12:10:3...

xiaomin0322 ⋅ 6分钟前 ⋅ 0

阿里云资源编排ROS使用教程

阿里云资源编排ROS详细内容: 阿里云资源编排ROS使用教程 资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、...

mcy0425 ⋅ 8分钟前 ⋅ 0

适配器设计模式

1、适配器模式 把一个类的接口变换成客户端所期待的另一种接口 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 分为类的适配器模式和对象的适配器模式 2、类适配器模式 类的适配...

职业搬砖20年 ⋅ 13分钟前 ⋅ 0

npm操作报错 _stream_writable.js:61

有一天 不知道什么原因(估计和node的版本有关),无论你做什么npm的操作 都会报错/usr/local/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_writable.js:61 这时候只要执...

lilugirl ⋅ 16分钟前 ⋅ 0

Eclipse安装插件的几种方式

Eclipse魅力之一就是支持可扩展的插件,来丰富自身的功能,这种方式也是建立在开源思想之上的。具体使用什么方式去安装插件,要看我们拿到的是什么。 1. 拿到的是一串URL,如http://subclips...

GordonNemo ⋅ 19分钟前 ⋅ 0

div图片叠加

css实现代码如下: <div style="position: relative;"><!--这个层为外面的父层,需设置相对位置样式--> <div style="position: absolute;"><!--子层,需设置绝对位置样式--> <i......

niithub ⋅ 20分钟前 ⋅ 0

作用域slot

如果父组件需要使用子组件中的内容怎么办,比如父组件需要控制子组件的显示 <div id="root"><child><template slot-scope="props"><h1>{{props.item}} <div>编辑</div></h1><......

金于虎 ⋅ 23分钟前 ⋅ 1

HongHu commonservice-eureka 项目构建过程

上一篇我们回顾了关于 spring cloud eureka的相关基础知识,现在我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家...

明理萝 ⋅ 26分钟前 ⋅ 1

xml和对象的相互转化

@Data//setter和getter方法,toString和equals,hashcode方法@EqualsAndHashCode//代表重写equals和hashcode方法@XmlAccessorType(XmlAccessType.FIELD)public class Classroom {@X......

拐美人 ⋅ 26分钟前 ⋅ 0

tableView cell的高度 分组头部尾部的高度 自适应

@property (nonatomic) CGFloat rowHeight; // default is UITableViewAutomaticDimension@property (nonatomic) CGFloat sectionHeaderHeight; // default is UITableViewA......

娜一片蓝色星海 ⋅ 27分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部