【转】python对操作系统的目录和文件操作

一、获取当前目录下的特定文件列表

>>>import glob,os
>>>curdir = os.getcwd()   #获取当前目录

>>>os.chdir(workdir)        #设置当前目录

>>>dir = glob.glob(‘*.dat’)  #获取当前目录的dat文件列表

>>>os.chdir(curdir)           #还原当前工作目录

>>>print dir
[‘mudlog.dat’,’ddd.dat’]
二、os模块的文件和目录操作函数
1.获得当前路径
os.getcwd()

  该函数不需要传递参数,它返回当前的目录。
 
>>> import os
>>> print ‘current directory is ‘,os.getcwd()
current directory is  D:\Python25\Lib\site-packages\pythonwin
#这里是PythonWin的安装目录

2.获得目录中的内容
os.listdir(path)     path:要获得内容目录的路径。

>>> import os
>>> os.listdir(os.getcwd())    # 获得当前目录中的内容
[‘dde.pyd’, ‘license.txt’, ‘Pythonwin.exe’, ‘scintilla.dll’, ‘win32ui.pyd’,
‘win32uiole.pyd’, ‘pywin’]

3.创建目录
os.mkdir(path)    path:要创建目录的路径。

>>> import os
>>> os.mkdir(‘E:\\book\\temp’)   # 使用os.mkdir创建目录

4.删除目录
os.rmdir(path)   path:要删除的目录的路径。

>>> import os
>>> os.rmdir(‘E:\\book\\temp’)   # 删除目录

需要说明的是,使用os.rmdir删除的目录必须为空目录,否则函数出错。

若想删除非空目录,先删除目录下的文件,然后再删除目录,递归过程。

5.判断是否是目录
os.path.isdir(path)    path:要进行判断的路径。

>>> import os
>>> os.path.isdir(‘E:\\book\\temp’)  # 判断E:\book\temp是否为目录
True           # 表E:\book\temp是目录

6.判断是否为文件
os.path.isfile(path)   path:要进行判断的路径。

>>> import os
>>> os.path.isfile(‘E:\\book\\temp’)  # 判断是否为文件
False           # 表示E:\book\temp不是文件
三、批量重命名

在日常工作中经常会遇到这样的情况,需要将某个文件夹下的文件按照一定的规律重新命名。如果手工完成的话,需要耗费大量的时间,而且

容易出错。在学习Python以后,完全可以写一个简单的脚本完成这样的工作。

import os
perfix = ‘Python’      # perfix 为重命名后的文件起始字符
length = 2         # length 为除去perfix后,文件名要达到的长度
base = 1         # 文件名的起始数
format = ‘mdb’       # 文件的后缀名

# 函数PadLeft将文件名补全到指定长度
# str 为要补全的字符
# num 为要达到的长度
# padstr 为达到长度所添加的字符
def PadLeft(str , num , padstr):
stringlength = len (str)
n = num – stringlength
if n >=0 :
str=padstr * n + str
return str

# 为了避免误操作,这里先提示用户
print ‘the files in %s will be renamed’ % os.getcwd()
input = raw_input(‘press y to continue\n’) # 获取用户输入
if input != ‘y’:       # 判断用户输入,以决定是否执行重命名操作
exit()
filenames = os.listdir(os.curdir)   # 获得当前目录中的内容

# 从基数减1,为了使下边 i = i + 1在第一次执行时等于基数
i = base – 1
for filename in filenames:    # 遍历目录中内容,进行重命名操作
i = i+1

# 判断当前路径是否为文件,并且不是“rename.py”
if filename != “rename.py” and os.path.isfile(filename):
name = str(i)      # 将i转换成字符
name = PadLeft(name,length,’0′) # 将name补全到指定长度
t = filename.split(‘.’)   # 分割文件名,以检查其是否是所要修改的类型
m = len(t)
if format == ”:     # 如果未指定文件类型,则更改当前目录中所有文件
os.rename(filename,perfix+name+’.’+t[m-1])
else:        # 否则只修改指定类型
if t[m-1] == format:
os.rename(filename,perfix+name+’.’+t[m-1])
else:
i = i – 1     # 保证i连续
else:
i = i – 1       # 保证i连续
四、代码框架生成器
编写代码要养成良好的习惯,为了使脚本更具可读性,往往需要添加注释,而且还应该在脚本头添加基本的说明,如作者、文件名、日期、用途、版权说明,以及所需要使用的模块等信息。这样,不仅便于保存脚本,而且也便于交流。但是,如果每次编写一个脚本就依次添加这样的信息,不免有些麻烦,以下代码实现了一个简单的代码框架生成器。

# -*- coding:utf-8 -*-
# file: MakeCode.py
#
import os
import sys
import string
import datetime
# python脚本模板
py = ”’#—————————————————–
# TO:     
#—————————————————–
# BY:
#—————————————————–
”’
# c模板
c = ”’ *—————————————————–
* TO:     
*—————————————————–
* BY:
*—————————————————–
”’
if os.path.isfile(sys.argv[1]):   # 判断要创建的文件是否存在,如果存在则退出脚本
print ‘%s already exist!’ % sys.argv[1]
sys.exit()
file = open(sys.argv[1], ‘w’)    # 创建文件
today = datetime.date.today()    # 获得当前日期,并格式化为xxxx-xx-xx的形式
date = today.strftime(‘%Y’)+’-‘+today.strftime(‘%m’)+’-‘+today.strftime(‘%d’)
filetypes = string.split(sys.argv[1],’.’) # 判断将创建的文件是什么类型以便对其分别处理
length = len(filetypes)
filetype = filetypes[length – 1]
if filetype == ‘py’:
print ‘use python mode’
file.writelines(‘# -*- coding:utf-8 -*-‘)
file.write(‘\n’)
file.writelines(‘# File: ‘ + sys.argv[1])
file.write(‘\n’)
file.write(py)
file.write(‘# Date: ‘ + date)
file.write(‘\n’)
file.write(‘#—————————————————–‘)
elif filetype == ‘c’ or filetype == ‘cpp’:
print ‘use c mode’
file.writelines(‘ \n’)
else:
print ‘just create %s’ % sys.argv[1]
file.close()        # 关闭文件

写好的脚本可以放到Windows的系统目录中,这样就可以随时运行,方便地在目录中产生Python脚本或者C/C++文件。
五、运行其他程序
在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码。
使用os.system函数运行其他程序
os模块中的system()函数可以方便地运行其他程序或者脚本。其函数原型如下所示。
os.system(command)      command :要执行的命令,相当于在Windows的cmd窗口中输入的命令。如果要向程序或者脚本传递参数,可以使用空格分隔程序及多个参数。

以下实例实现通过os.system()函数打开系统的记事本程序。

>>> import os
# 使用os.system()函数打开记事本程序
>>> os.system(‘notepad’)
0 # 关闭记事本后的返回值
# 向记事本传递参数,打开python.txt文件
>>> os.system(‘notepad python.txt’)
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/awingle/archive/2009/04/24/4105722.aspx

发表评论

电子邮件地址不会被公开。 必填项已用*标注

机器人检查 *