Python7.3操作文件和目录

操作文件和目录

如果我们要操作文件和目录,可以在命令行下输入系统提供的各种命令来完成。比如dir、cp等命令。

如果要在Python程序中执行这些文件和目录的操作怎么办呢?其实操作系统提供的命令只是简单的调用了操作系统的接口函数,Python内置的os模块也可以直接调用操作系统提供的接口函数。

打开Python交互命令行,我们来看看如何使用os模块的基础命令:
>>>import os

>>>os.name

'nt'

如果是'posix',说明是Linux/Unix/Mac OS X,如果是'nt',则是windows系统。

要获取详细的系统信息,可以调用uname()函数:
uname()函数在windows上不支持,也就是说,os的某些函数跟操作系统是相关的。

环境变量

在操作系统中定义的环境变量,全部包存在os.environ这个变量中,可以直接查看:
>>>os.environ

要获取某个环境变量的值可以调用os.environ.get('key'):
>>>os.environ.get('path')

操作文件和目录

操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中,这一点要注意下。查看、调用、删除目录可以这样做:
>>>os.path.abspath('.')

'C:\\user\\Administrator'

>>>os.path.join('c:\\user\\Administrator','testdir')

'C:\\user\\Administrator\\testdir'

>>>os.mkdir('C:\\\user\\Administrator\\testdir')

>>>os.rmdir('C:\\user\\Administrator\\testdir')

把两个路径合并成一个,不要直接拼写字符串,而是要通过os.path.join()函数,这样可以正确处理不同操作系统的路径分隔符。在Linux下,os.path.join()返回这样的字符串:
part1/part2

而windows下会返回:
part1\part2

同样的道理,要拆分路径时也不要直接拆分字符串,而要通过os.path.split()函数,这样可以把一个路径拆分为两个部分,后一部分总是最后级别的目录或者文件名:
>>>os.path.split('user\administrator\testdir\file.txt')

('user\administrator\testdir','file.txt')

os.path.splitext()可以让你直接得到文件的扩展名,很多时候非常方便:

>>> os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')

这些合并、拆分路径的函数并不要求文件真正存在,它们只对字符串进行操作。

文件操作使用下面的函数。假设当前目录下有一个test.txt的文件:
>>>os.rename('test.txt','test.py')

>>>os.remove('test.py')

但是复制文件在os模块中竟然找不到。原因是复制文件并非由操作系统提供的系统调用。理论上讲,我们通过上节学习到的读写文件可以完成文件的复制,只不过要多谢几行代码。

幸运地是,shutil模块提供了copyfile()函数,你还可以在shutil模块中找到很多实用的函数,它们可以看做是os模块的补充。

最后看看如何通过Python的特性来过滤文件。比如我们要列出当前目录下的所有文件:
>>>[x for x in os.listdir('.') if os.path.isdir(x)]

要列出所有的.py文件也秩序一行代码:
>>>[x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] =='.py']

是不是非常简洁?

小结:
Python的os模块封装了操作系统的目录和文件操作,要注意这些函数有的在os模块中,有的在os.path中。

更多相关文章
  • 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.removedirs(r"c:\python")检验给出的路径是否是一个文件: ...
  • 大多数程序都不是孤立的,它们与它们的环境相互作用.很多的程序也需要通过文件操作实现数据的存贮和交换. 文件句柄(file handle)是Perl程序中为程序和外部世界提供I/O连接的名称.建议全部使用大写字母以示与变量等的区别.特别地,也可以将STDIN/STDOUT/STDERR也认为 是Per ...
  • 主要内容:目录操作:打开.读取.关闭.创建.重命名.删除文件操作:打开.读.写.关闭.重命名.删除信息获取函数 filemtime() filesize() file_exists()  is_dir()一.读取文件内容,赋值给一个字符串1.file_get_contents - 获取一个文件或网络 ...
  • 2.文件和目录操作管理本节主要学习在Linux下如何使用命令对文件和目录进行操作,这些命令pwd.cd.ls.mkdir.rmdir.tree等.2.1 pwd:显示工作目录路径使用pwd命令可以显示当前用户所处的工作目录的绝对路径.2.1.1命令语法:pwd[选项]2.1.2参数选项:选项选项含义 ...
  • 本文主要介绍python文件和目录操作函数小结,主要涉及到os模块和shutil模块的一些方法.python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:o ...
  • 登录方法,运行级别,关闭系统,文件和目录的操作,权限
    登录方法1.本地登录    6个字符终端(f1---f6)和1图形终端(f7)图形 --->字符      ctrl  alt + shift+f1--f6字符 --->字符     alt+f1--f6字符--->图形      alt+f72. 网络登录第一种方法:telnet ...
  • 首先,我们对fs文件系统分为两类操作,第一类是xxx方法,第二类是xxxSync方法.所有的fs操作几乎都是这两类,第一类是异步回调,第二类是同步等待. A.对于文件的读写操作 a.完整性读写 1.fs.readFile(filename,[options],callback)//可以用来完整读取一 ...
  • Linux系统下文件与目录操作  与其它操作系统一样,在Linux系统下用户的数据和程序也是以文件的形式保存的.所以在使用Linux的过程中,是经常要对文件与目录进行操作的.现在我们就以一个Window用户的立场来学习一下Linux下的文件与目录操作方法.1. 文件名与文件类型文件名是一个文件的标识 ...
一周排行
  • win2008下SNMP服务功能安装
    SNMP是大家进行服务器和网络设备管理的一个重要服务,在windows server里面, ...
  •     前几天刚刚将有关oc的教程草草的看了一遍,发现oc其实也不像传说的那么难.今天又开始马不停蹄的学习Swift因为我很好奇,到底苹果出的而且想要代替oc的编程语言应该是个什么样子呢?看了网上的一些中文教材之后, ...
  • 最强大脑可以被训练出来吗
    一档标榜“科学真人秀”的电视节目<最强大脑>最近颇受关注.在这个极具娱乐化的时 ...
  • 我是前端的门外汉,js我用得比较少.今天意外发现js自带的replace “居然”只替换1处,而其它的许多许多语言都是替换全部的. 你可能会说,切,我早就知道.高手请绕道. 你可能会说,用js的正则就可以解决这个问题 ...
  • Nagios+Cacti+NCP+NConf整合安装
    nagios和cacti参考之前的文章nagios:  http://liyaoyi.bl ...
  • 一、okio框架概述
    OkioOkio是 java.io 和 java.nio的补充,使用它更容易访问.存储和处 ...
  • 前言本文来自<深入分析Java Web技术内幕>一书,因为本人对DNS不是特别熟悉,这本书关于DNS的部分也已经讲得比较详细了,所以就直接把书里面的内容拿来用了.老规矩,不复制.不黏贴,全部内容手打,边打 ...
  • ASZip文件库是开源的AS3版–Zip压缩算法,具体示例应用可见http://code.google.com/p/aszip/.目前的最新版本是0.2版.最近在项目中需要用到该第三方类库来支持Flash对图片文件的 ...
  • 简单的Http Server 使用Libevent内置的http相关接口,可以很容易的构建一个Http Server,一个简单的Http Server如下: #include <event2/event.h&g ...
  • 这个问题一般是头文件重复导入的问题,但是iOS中用的是#import,所以问题不是出在这上面.那么问题就出在预编译的路径上,一般是由于我们把一个文件复制粘贴到另一个地方,桌面或者文件夹.此时在编译时就会出现这个问题. ...