python 文件和目录操作
1.获得当前路径
在Python中可以使用os.getcwd()函数获得当前的路径。其原型如下所示。
os.getcwd()
该函数不需要传递参数,它返回当前的目录。需要说明的是,当前目录并不是指脚本所在的目录,而是所运行脚本的目录。例如,在PythonWin中输入如下脚本。
>>> import os >>> print 'current directory is ',os.getcwd() current directory is D:\Python25\Lib\site-packages\pythonwin #这里是PythonWin的安装目录
如果将上述内容写入pwd.py,假设pwd.py位于E:\book\code目录,运行Windows的命令行窗口,进入E:\book目录,输入code\pwd.py,输出如下所示。
E:\book>code\pwd.py
current directory is E:\book
2.获得目录中的内容
在Python中可以使用os.listdir()函数获得指定目录中的内容。其原型如下所示。
os.listdir(path)
其参数含义如下。
· path: 要获得内容目录的路径。
以下实例获得当前目录的内容。
>>> import os >>> os.listdir(os.getcwd()) # 获得当前目录中的内容 ['dde.pyd', 'license.txt', 'Pythonwin.exe', 'scintilla.dll', 'win32ui.pyd', 'win32uiole.pyd', 'pywin']
3.创建目录
在Python中可以使用os.mkdir()函数创建目录。其原型如下所示。
os.mkdir(path)
其参数含义为。
· path: 要创建目录的路径。
以下的实例将在E:\book目录下创建temp目录。
>>> import os
>>> os.mkdir('E:\\book\\temp') # 使用os.mkdir创建目录
4.删除目录
在Python中可以使用os.rmdir()函数删除目录。其原型如下所示。
os.rmdir(path)
其参数含义如下。
· path: 要删除的目录的路径。
以下实例删除E:\book\temp目录。
>>> import os
>>> os.rmdir('E:\\book\\temp') # 删除目录
需要说明的是,使用os.rmdir删除的目录必须为空目录,否则函数出错。
5.判断是否是目录
在Python中可以使用os.path.isdir()函数判断某一路径是否为目录。其函数原型如下所示。
os.path.isdir(path)
其参数含义如下。
· path: 要进行判断的路径。
以下实例判断E:\book\temp是否为目录。
>>> import os
>>> os.path.isdir('E:\\book\\temp') # 判断E:\book\temp是否为目录
True # 表E:\book\temp是目录
6.判断是否为文件
在Python中可以使用os.path.isfile()函数判断某一路径是否为文件。其函数原型如下所示。
os.path.isfile(path)
其参数含义如下。
· path:要进行判断的路径。
以下实例判断E:\book\temp是否为文件。
>>> import os
>>> os.path.isfile('E:\\book\\temp') # 判断是否为文件
False # 表示E:\book\temp不是文件
列出目录中所有文件的方法
关键字: dir
import string, os, sys
dir = '/var'
print '----------- no sub dir'
files = os.listdir(dir)
for f in files:
print dir + os.sep + f
print '----------- all dir'
for root, dirs, files in os.walk(dir):
for name in files:
print os.path.join(root, name)
前面的 os.listdir 可以列出 dir 里面的所有文件和目录,但不包括子目录中的内容。os.walk 可以遍历下面的所有目录,包括子目录。
关于5月前
对这个语言也有研究吗?朋友,你很厉害哦~
[回复]
scripter 回复:
三月 21st, 2010 at 18:00
咳咳。只是以前常用python处理文本来着。
但这篇文章是网络上转的, 由于转的人比较多, 没有找到原创地址。
[回复]
sink 回复:
三月 26th, 2010 at 14:57
呵呵,原来如此。我对此是没有一点研究。专心c++。
[回复]