《转》Python学习(15)-对文件的操作(二)
转自 http://www.cnblogs.com/BeginMan/p/3169020.html
一、文件系统
从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
Python对文件系统的操作是通过os模块实现。提供了访问操作系统功能的接口,但是这个os模块只是一个伪文件系统操作,真正的“模块”如,dos,os2等,这些是直接的底层工作,而Python的os模块只是一种借用操作(个人理解)
os.path模块可对路径进行相关操作。
os、os.path这两个模块与平台、操作系统无关。
二、os模块的文件/目录访问函数
| 函数 | 描述 |
|---|---|
| 文件处理 | |
| mkfifo()/mknod() | 创建命名管道/创建文件系统节点 |
| remove(path)/unlink(path) | 删除文件 如:os.remove('d:\\b.png') |
| rename(old, new)/renames(old, new) | 重命名文件:如:os.rename('d:\\b.png','d:\\a.png') |
| stat(path) | 返回文件信息:
>>> os.stat('d:\\a.png')
|
| symlink() | 创建符号链接 |
| utime() | 更新时间戳 |
| tmpfile() | 创建并打开('w+b')一个新的临时文件,注意不含参数,一旦执行则创建一个临时文件,类型未知
>>> os.tmpfile()#创建临时文件 |
| walk(top, topdown, onerror) | 生成一个目录树下所有文件名 |
| 目录/文件夹 | |
| chdir(path) | 改变当前工作目录 |
| listdir(path) | 列出指定目录文件
>>> os.listdir('d:\\')
|
| getcwd()/getcwdu() | 返回当前目录:
>>> os.getcwd() |
| mkdir(path)/makedirs(name, mode) | 创建目录/创建多层目录
>>> os.mkdir('D:\\file')
|
| rmdir(path)/removedirs(name) | 删除目录/删除多层目录 |
| 访问/权限 | |
| access(path, mode) | 验证权限目录 |
| chmod(path, mode) | 更改权限模式 |
| 文件描述符操作 | |
| open()、read()、write() | 见上一节 |
| dup()/dup2() | 复制 |
其他的见《Python 核心编程2》9.7节
应用:
(1):检查下磁盘中(D)是否有文件"BeginMan"的文件夹,如果存在则新建"SuperMan",
在该目录下创建一个名为"readme.txt"的文本文件,写入数据,然后输出文件内容
(2):如果文件夹BeginMan存在,则遍历该目录,并输入目录文件,
如果该目录下存在文件,且如果有文件名为b.png,则重命名为boy.png,移到D盘根目录下
(3):删除BeginMan目录下所有文件,只保留子目录
文件系统图如下:

D盘中并没有SuperMan的文件夹,这里程序如下:
#coding=utf-8
import os,shutil
import datetime DIR = 'D:\\'
FILENAME = 'BeginMan'
PATH = 'D:\\%s' %FILENAME
CONTENT = """
(1):检查下磁盘中(D)是否有文件"BeginMan"的文件夹,如果存在则新建"SuperMan",\n
在该目录下创建一个名为"readme.txt"的文本文件,写入数据,然后输出文件内容\n
(2):如果文件夹BeginMan存在,则遍历该目录,并输入目录文件\n,
如果该目录下存在文件,且如果有文件名为b.png,则重命名为boy.png,移到D盘根目录下\n
(3):删除BeginMan目录下所有文件,只保留子目录
==============================================\n
时间:%s\n
作者:%s\n
""" %(datetime.datetime.now(),FILENAME) if FILENAME in os.listdir(DIR):
print u'已经有同名文件:%s' %FILENAME
for obj in os.listdir(PATH):
print u'%s\\%s\n' %(PATH,obj)
try:
if os.path.isfile(u'%s\\%s' %(PATH,obj)):
if obj == 'b.png': #如果含有文件为b.png,则重命名为boy.png,移动到该目录上级
os.rename(u'%s\\%s' %(PATH,obj),u'%s\\%s' %(PATH,'boy.png'))
shutil.move(u'%s\\%s' %(PATH,'boy.png'), 'D:\\')
os.remove(u'%s\\%s' %(PATH,obj))#删除文件,只保留子目录
except Exception,e:
print 'The error:%s' %e
FILENAME = 'SuperMan'
os.mkdir('D:\\%s' %FILENAME) #创建目录
f = open('D:\\%s\\readme.txt'%FILENAME,'w' ) #在该目录下创建文件
f.write(CONTENT) #写入数据
f.close()
f = open('D:\\%s\\readme.txt'%FILENAME,'r' )
print [lines.strip() for lines in f] #输出
运行如下:

效果如下:



Python有关文件、文件夹操作小结:
import os,shutil #要用到这两个模块创建文件:1) os.mknod("test.txt") 创建空文件2) open("test.txt",w) 直接打开一个文件,如果文件不存在则创建文件创建目录:os.mkdir("file") 创建目录复制文件:shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录复制文件夹:shutil.copytree("olddir","newdir") olddir和newdir都只能是目录,且newdir必须不存在重命名文件(目录)os.rename("oldname","newname") 文件或目录都是使用这条命令移动文件(目录)shutil.move("oldpos","newpos") 删除文件os.remove("file")删除目录os.rmdir("dir") 只能删除空目录shutil.rmtree("dir") 空目录、有内容的目录都可以删转换目录os.chdir("path") 换路径判断目标os.path.exists("goal") 判断目标是否存在os.path.isdir("goal") 判断目标是否目录os.path.isfile("goal") 判断目标是否文件 参考:http://www.cnblogs.com/phoebus0501/archive/2011/01/19/1939646.html |
三、os.path
如下表:
| 函数 | 描述 |
|---|---|
| 分隔 | |
| basename(p) | 去掉目录路径, 返回文件名:
os.path.basename('D:\\Project\\python25\\Lib\\a.txt') #a.txt
|
| dirname(p) | 去掉文件名, 返回目录路径:
os.path.dirname(D:\\Project\\python25\\Lib\\a.txt) |
| join() | 将分离的各部分组合成一个路径名:Django项目中常用,
settings.py |
| split() | 返回 (dirname(), basename()) 元组:
>>>DIRNAME = 'D:\\Project\\python25\\Lib\\a.txt' |
| splitdrive() | 返回 (drivename, pathname) 元组:
os.path.splitdrive(DIRNAME) |
| splitext() | 返回 (filename, extension) 元组
os.path.splitext(DIRNAME) |
| 信息 | |
| getatime(filename) | 返回最近访问时间:
gTime = os.path.getatime(os.getcwd()) |
| getctime(filename) | 返回文件创建时间:
cTime = os.path.getctime(os.getcwd()) |
| getmtime(filename) | 返回最近文件修改时间 |
| getsize(filename) | 返回文件大小(以字节为单位) |
| 查询 | |
| exists() | 指定路径(文件或目录)是否存在 |
| isabs() | 指定路径是否为绝对路径 |
| isdir() | 指定路径是否存在且为一个目录 |
| isfile() | 指定路径是否存在且为一个文件 |
| islink() | 指定路径是否存在且为一个符号链接 |
|
ismount() samefile() |
指定路径是否存在且为一个挂载点 两个路径名是否指向同个文件 |
《转》Python学习(15)-对文件的操作(二)的更多相关文章
- Python学习日记之文件读取操作
Python内置了文件读写的函数open,read 用法示例: open('/home/root/files.txt ') 在打开文件后,操作完成后可以使用close()关闭文件,但比较好的文件读写方 ...
- 记录我的 python 学习历程-Day08 文件的操作
文件操作的初识 用 python 代码对文件进行各种操作. 基本构成: 文件路径:path 打开方式:读.写.追加.读写.写读-- 编码方式:utf-8 / gbk / gb2312-- f = op ...
- 《转》Python学习(14)-对文件的操作(一)
转自 http://www.cnblogs.com/BeginMan/p/3166644.html 一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python ...
- python学习_数据处理编程实例(二)
在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...
- 【Python学习之六】文件操作
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.文件的打开与关闭 使用open函数,可以打开一 ...
- Python学习笔记015——文件file的常规操作之一(文本文件)
1 什么是文件 文件是用于数据存储的单位 文件通常用来长期保存数据 读写文件是最常见的I/O操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件的功能都是由操作系统提供的,一般而言,操 ...
- Python学习:7.文件操作
文件操作 我们曾将听过一个问题,将大象放入冰箱分为三步:1.打开冰箱门,2.将大象放进去,3.关上冰箱门.今天我们要讲的Python文件操作的步骤就像将大象放入冰箱的步骤一样. 使用Python操作文 ...
- python学习笔记之文件操作(三)
这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...
- python学习第十八天 --文件操作
这一章节主要讲解文件操作及其文件读取,缓存,文件指针. 文件操作 (1)文件打开:open(filepath,filemode) filepath:要打开文件的路径 filemode:文件打开的方式 ...
随机推荐
- SpringMVC系列(六)处理模型数据
Spring MVC 提供了以下几种途径输出模型数据: ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据 Map 及 Model: ...
- MySQL5.6主从复制搭建基于日志(binlog)
什么是MySQL主从复制 简单来说,就是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟 ...
- PHI 数据库简介
PHI是一个致病菌的数据库,截止到2017年8月1号为止,最新的版本是4.3,数据库中收录了实验验证过的致病菌的信息,其中有176个来自动物的致病菌,227个来自植物的致病菌,3个来自真菌的致病菌; ...
- asp.net mvc用aspose.cells 导出xlsx格式的excel。无残留
public void Export() { HttpResponse Response = System.Web.HttpContext.Current.Response; // Load your ...
- EF学习和使用综合
一.(引)你必须知道的EF知识和经验 二.(引)EF学习和使用(七)EF性能优化篇 三.(引)采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延 ...
- Xshell的常用命令
常用的命令: suse linux 常用命令 (1) 命令ls——列出文件 ls 显示当前目录文件 ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件 ls a* 列出当 ...
- [Learn AF3]第六章 App Framework 3.0中的内置矢量图标
AF3的内置矢量图标 介绍:要使用af3中的图标,必须首先引入icon.css,由于文件中已经内置了字体文件数据,因此不需要引入字体文件支持. <link rel="styleshee ...
- KSImageNamed项目图片智能提示
下载地址:https://github.com/ksuther/KSImageNamed-Xcode PS:如果在插件未更新到支持Xcode 6.3.2的情况下,要在Xcode 6.3.2中使用,需要 ...
- Maven 那点事儿
http://my.oschina.net/huangyong/blog/194583?fromerr=Dmf7HPwX Java那点事儿 Maven Smart 目录[-] 0. 前言 1. 安装 ...
- c++浅拷贝和深拷贝---14
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 1.什么是拷贝构造函数: 拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来 ...
