zoukankan      html  css  js  c++  java
  • Python之文件操作及常用函数

    常见全局函数:

    1.dir(nameStr):

    常见系统变量:

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

    一、模块

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

      2.导入模块:import 模块名

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

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

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

    注:2和4、5的区别:使用2方式时,引用模块中的元素需要使用“模块名.变量名”的形式,而4、5可直接使用变量名。

    二、包

      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):向文件中写内容,写入的内容不会自动换行,但可使用换行符“ ”。如:a.write("one line"),此时文件test.txt中出现内容“one line”。

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

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

                 使用循环可遍历文件中的每一行文本。 如: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 ","two "]

                  for line in lines:#遍历文本

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

                              ->"two ",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 est.(不同系统下输出不完全一致)

        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:ac","清理"了”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)

  • 相关阅读:
    HTTP 501 错误 – 未实现 (Not implemented) 或者是 Failure: Address already in use
    HTTP 400 Bad request 原因
    树莓派 NAS aria2 下载磁力链接无速度
    踩坑备忘之“yarn : 无法加载文件 C:\Users\siazon\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。"
    架构小试之IDL
    服务端基本概念和指标
    git常用命令
    mysql20211116
    blog JavaJinguo
    android 分享功能
  • 原文地址:https://www.cnblogs.com/heyongqi/p/5565651.html
Copyright © 2011-2022 走看看