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. 文件名与文件类型文件名是一个文件的标识 ...
一周排行
  • 1.编写简单的mysql的Dockerfile文件[[email protected]~]# cd /opt/docker-file/mysql/ [[email protected]]# ls Dockerfile [roo ...
  • 开闭原则是面向对象设计中"可复用设计"的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段.    1988年,Bertrand Meyer在他的著作<Ob ...
  •  看书的时候看到这个定义,有点不明白,到网上查询了下,就copy过来了..Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型,例如:Person person = ...
  • 思路:sudo 配合syslog 服务,进行日志审计具体方法:安装sudo命令,rsyslog服务(centos6.4)注意:默认情况下,centos5.8系统中已安装上sudo和syslog服务检查是否安装好,具体 ...
  • MySQL备份和恢复具体实施(上)
     MySQL备份类别,参考笔者上篇文章MySQL备份类别冷备:对于InnoDB存储引擎的冷 ...
  • 计算任意两个日期之间相差的天数
    面试的时候遇到过这么个问题:编程实现求两个日期之间相差的天数,输入的日期格式自己定义,要有 ...
  • OM1、OM2、OM3、OM4多模光纤有何区别
    鹏睿(BOSUN)信息技术OM3万兆光纤解决方案从遍及全球的因特网,到各大校园.企业都在广 ...
  • 1 创建虚拟机2 配置ip地址vim /etc/sysconfig/network-scripts/ifcfg-eth0IPADDR=192.168.18.166NETMASK=255.255.255.0[root@ ...
  • php文字、图片水印功能函数封装
    一直在做有关php文字图片上传方面的工作,所以把此功能函数整理了一次,现在分享给大家. & ...
  • 适配器模式(Adapter Pattern)--.NET设计模式系列之八,年月概述在软件系统中,由于应用环境的变化,常常需要将"一些现存的对象"放在新的环境中应用,但是新环境要求的接口是这些现存对 ...