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. 文件名与文件类型文件名是一个文件的标识 ...
一周排行
  • 寻找标签第一种 class选择器    .c1{}    <div class='c1'>aaa</div>    <div class='c1'>aaa</div>第 ...
  • RKHunter官网为:http://www.rootkit.nl/projects/rootkit_hunter.htmlrkhunter是专业检测系统是否感染rootkit的一个工具,通过脚本来确认系统是否感染r ...
  • [场景]公司采用ADSL拨号上网,即上网获得是动态IP.服务器安全策略升级,只允许公司内可以访问服务器.实现过程:服务器指定固定IP可以访问服务器,其实很容易,一般有以下三下方法:方法一: 在/etc/hosts.a ...
  • IDC评述网(idcps.com)09月07日报道:根据CNCERT抽样监测结果和国家信息安全漏洞共享平台(CNVD)发布的数据得悉,在8月第4周(4至0)期间,我国互联网网络安全 ...
  • 实例浅析epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
    一.基本概念                                       ...
  •  1.服务器安全设置之--硬盘权限篇这里着重谈需要的权限,也就是最终文件夹或硬盘需要的权限,可以防御各种木马入侵,提权攻击,跨站攻击等.本实例经过多次试验,安全性能很好,服务器基本没有被木马威胁的担忧了. 硬盘或文件 ...
  • pix :#write erasepix :#reload 路由器也可以用 write erase命令router#erase start-configrouter#reload: 
  • MDI编程中需要验证用户身份,那么登陆窗口就需要在验证密码后进行相关的隐藏处理.(1)隐藏登陆窗口(登陆窗体作为启动)登陆按钮事件:this.Hide();//隐藏登陆窗口MDI_Name M = new MDI_N ...
  • 学习笔记在原生javascript中使用ActiveX和插件
    什么是插件 现在的浏览器提供了大量的内置功能,但仍然有一些工作无法完成,如播放音频和视频. ...
  • Outlook中删除收件人历史记录Outlook 能够自动记忆收件人地址,[email protected],[email protected]选择,要清除这个记录,以下三 ...