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. 文件名与文件类型文件名是一个文件的标识 ...
一周排行
  • JVM实用参数(一)JVM类型以及编译器模式http://ifeve.com/useful-jvm-flags-part-1-jvm-types-and-compiler-modes-2/JVM实用参数(二)参数分类 ...
  • 你对中国IaaS市场有何印象?市场热闹,但竞争并不激烈,每个服务商都能找到自己发挥的空间.不断有国外服务商涌入这一市场,国内也有数据中心服务提供商.电信运营商.电商企业甚至硬件厂商挤进这一行.厂商.用户对云计算.云服 ...
  • R410  BMCR620  iDRACR720  对于远程的服务器,我们不能经常性的去机房维护,所以远程控制对于服务器来说就显得至关重要.那么你是用什么方式对服务器进行远程控制呢?远程桌面?还是KVM切换器?NO, ...
  •     嵌入网页页面制作出自个人的爱好,利用代码的编写融入产生web网页页面的应用效果,来进行页面的选择.搜索.这样可以大大的提高了参考者.浏览者的个人不同需要,从而也了解了对网页页面制作扩大范围和空间.也可以转换对 ...
  • Cache的工作原理 Cache的工作原理是基于程序访问的局部性.     对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内.指令地址的分布本来就 ...
  • 利用交换机镜像点抓流量与分析协议
     以下信息是本人刚涉足IDC圈,整理的文档,三年过去….觉得当时写的不太好.但还是把它黏贴 ...
  • 使用Monkey进行UI或应用程序测试         Monkey是运行于模拟器或手机上的一个程序,通过生成伪随机的大量的系统级的用户事件流来模拟操作,包括单击.触摸.手势等.从而为正在开发中的应用程序通过随机响应 ...
  • Web技术的更进和搜索引擎息息相关,加入51cto只在为了更好的交流与学习.http://home.51cto.com/index.php?s=/space/829656
  • LAMP源码环境搭建与wordpress的使用
     Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网 ...
  • 一.配置文件1./etc/rc.config.d/netconf2./etc/hosts二.启动文件1./sbin/init.d/net  start|stop2./sbin/init.d/hostname  sta ...