python 16 文件操作(二)
转自 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 16 文件操作(二)的更多相关文章
- Python 常见文件操作的函数示例(转)
转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...
- 孤荷凌寒自学python第三十三天python的文件操作初识
孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...
- python中文件操作的六种模式及对文件某一行进行修改的方法
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...
- Python常见文件操作的函数示例
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
- python的文件操作及简单的用例
一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ...
- [转]python file文件操作--内置对象open
python file文件操作--内置对象open 说明: 1. 函数功能打开一个文件,返回一个文件读写对象,然后可以对文件进行相应读写操作. 2. file参数表示的需要打开文件的相对路径(当前 ...
- 员工管理系统+字符编码+Python代码文件操作
员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1 debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
随机推荐
- 其它课程中的python---5、Pandas处理数据和读取数据
其它课程中的python---5.Pandas处理数据和读取数据 一.总结 一句话总结: 记常用和特例:慢慢慢慢的就熟了,不用太着急,慢慢来 库的使用都很简单:就是库的常用函数就这几个,后面用的时候学 ...
- systemctl命令配置系统服务
1.systemd的配置文件目录 systemd将daemon执行的脚本视作服务单位(unit),服务依据功能区分时,分为不同的类型(type). 常见的systemd服务类型如下表: 后缀名称 ...
- nginx代理一个服务器上所有域名
1. 主配置文件不需要更改任何配置2. 在vhosts目录下需要建立两个文件,一个是servername 列表文件,一个是虚拟主机配置文件两个文件内容分别为 #() servername server ...
- TLS/SSL 协议 - Server Certificate
Server Certificate 典型的Certificate消息用于携带服务器X.509证书链.证书链是以ASN.1 DER编码的一系列证书,一个接着一个组合而成.主证书必须第一个发送,中间证书 ...
- vim与ctags/cscope的完美结合
1. 安装vim/ctags/cscope ctag 2. 在源码根目录下执行 sudo ctags -R . 会生成tags文件,里面包含着整个源码目录下的符号信息. 3. 直接到达某个符号(比 ...
- zabbix--监控的组件和进程介绍
上图是zabbix的架构,zabbix proxy(代理),可以减小IO并发. zabbix web GUI是用php写的画图工具,从数据库抓取数据. zabbix database zabbix获取 ...
- erlang在windows下和虚拟机节点通信
版权声明:博客将逐步迁移到 http://cwqqq.com https://blog.csdn.net/cwqcwk1/article/details/24738599 在Linux下部署erlan ...
- 微信小程序のwxs
WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构. wxs可以说就是为了满足能在页面中使用js存在的,在wxml页面中,只能在插值{{ }}中写简单的j ...
- “使用Adobe Reader XI打开PDF文件,左侧无法显示导航列表”解决方法
在Word中将文档另存为PDF格式之后,再使用Adobe Reader XI打开,没有左侧导航列表: 解决步骤: 1.在word另存为时,在另存为对话框中,点击如下图所示的“选项” 2.在弹出的对话框 ...
- WordPress .gitignore
# ----------------------------------------------------------------- # .gitignore for WordPress @salc ...