对于Python语言进行处理文件解读

开发 后端
使用操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数。

如何在Python语言中复制和删除文件,以及怎样将一个完整的文件路径分解成目录部分和文件名部分,***,我们讲解目录的创建,以及如何在目录树中移动目录并处理文件。

对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数。重要的是,这些函数无论是在Unix、Windows还是Macintosh平台上,它们的使用方式是完全一致的。本文将详细解释这些函数的使用方法。

首先,我们介绍Python语言中类似于Windows系统的dir命令的列出文件功能,然后描述如何测试一个文件名对应的是一个标准文件、目录还是链接,以及提取文件大小和日期的方法。

之后,我们还将介绍如何删除文件和目录,如何复制和删除文件,以及怎样将一个完整的文件路径分解成目录部分和文件名部分,***,我们讲解目录的创建,以及如何在目录树中移动目录并处理文件。

一、显示目录内容当我们想要列出当前目录中所示:

  1. origdir = os.getcwd() # 将当前位置记下来  
  2. newdir = os.path.join(os.pardir, ’mynewdir’)  
  3. if not os.path.isdir(newdir):  
  4. os.mkdir(newdir) # 或者os.mkdir(newdir,’0755’)  
  5. os.chdir(newdir)  
  6. ...  
  7. os.chdir(origdir) # 返回原目录  
  8. os.chdir(os.environ[’HOME’]) # 移到主目录 

上述代码使用了glob函数,该函数的参数为要显示的文件类型。在这里,文件类型是通过类似UNIX操作系统shell风格通配符描述的一些文件名来指定的。这些通配符的使用方法,具体请参考fnmatch模块的文档,那里有具体的说明和示例。为了显示一个目录中的全部文件,可以使用如下所示的os.listdir函数:

  1. def checksize1(arg, dirname, files):  
  2.  
  3.   for file in files:  
  4.  
  5.   filepath = os.path.join(dirname, file)  
  6.  
  7.   if os.path.isfile(filepath):  
  8.  
  9.   size = os.path.getsize(filepath)  
  10.  
  11.   if size > 1000000:  
  12.  
  13.   sizesize_in_Mb = size/1000000.0  
  14.  
  15.   arg.append((size_in_Mb, filename))  
  16.  
  17.   bigfiles = []  
  18.  
  19.   root = os.environ[’HOME’]  
  20.  
  21.   os.path.walk(root, checksize1, bigfiles)  
  22.  
  23.   for size, name in bigfiles:  
  24.  
  25.   print name, ’大小为’, size, ’Mb’ 

我们知道,文件名、目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名、目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfile函数、isdir函数和islink函数来达成我们的目标。

若要删除单个文件的话,可以使用os.remove函数,例如:os.remove(’mydata.dat’)。Os.remove的别名是os.unlink。不过后者跟传统的UNIX操作系统以及Perl中清除文件的函数重名。我们可以使用下列方式来删除一组文件,如所有以.jpg以及*.gif为扩展名的文件:

  1. def somefunc(arg, dirname, files):  
  2. origdir = os.getcwd(); os.chdir(dirname)  
  3. <do tasks> 
  4. os.chdir(origdir)  
  5. os.path.walk(root, somefunc, arg) 

大家知道,只有当目录中内容已经被清空的时候,我们才可以使用rmdir命令来删除该目录。不过,我们经常想要删除一个含有许多文件的目录树,这时我们可以使用shutil模块提供的rmtree函数,如下所示:

  1. def somefunc(arg, dirname, files):  
  2. origdir = os.getcwd(); os.chdir(dirname)  
  3. <do tasks> 
  4. os.chdir(origdir)  
  5. os.path.walk(root, somefunc, arg) 

它实际上是过于严厉。我们需要的只是一个被遍历的一个文件/目录名序列。实际上,我们并不关心名称是否存储在一个列表、元组或者数值数组中,所以更好的测试应该像下面这样

假设我们想要在自己的主目录下创建一个新目录py/src/test1,但是目前py、src和test1都不存在。如果使用mkdir命令来创建的话。需要使用三次才能建好这个嵌套的目录,但是使用Python语言提供的os.makedirs命令的话,则无需这样麻烦了,该命令可以一次建好整个目录。

【编辑推荐】

  1. 有关Python系统文件进行介绍指导
  2. 如何正确的使用Python函数
  3. 对Python 构建工具进行详细介绍分析
  4. PythonAndroid浅析Python优势所在
  5. 如何使用Python模块解析配置文件?
责任编辑:chenqingxiang 来源: csdn
相关推荐

2010-02-23 17:35:46

Python

2010-02-23 16:46:27

Python设计语言

2010-05-06 10:31:32

Tuxedo负载均衡

2010-02-03 13:37:59

Python 特性

2010-03-01 14:02:26

Python批处理语言

2010-03-05 09:40:08

Python递归

2019-03-13 10:38:43

Nginx收购Web

2009-11-26 13:27:10

VS2003水晶报表

2010-02-22 15:49:35

Python应用程序

2010-02-26 09:55:22

Python应用程序

2009-12-08 11:08:27

WCF双向

2010-02-04 14:16:45

Android平台

2010-03-01 09:43:09

Python编程语言

2010-02-23 09:52:39

2009-12-11 14:16:11

VS2010 Ulti

2009-12-08 14:51:35

Silverlight

2010-02-05 15:22:14

2009-12-24 15:51:34

ADO属性

2009-12-15 14:44:24

Visual Stud

2009-12-25 15:38:12

ADO连接池
点赞
收藏

51CTO技术栈公众号