Python的文件及文件夹操作

转:http://blog.csdn.net/gexiaobaohelloworld/article/details/7828110

python os模块

1. os.sep可以取代操作系统特定的路径分割符。

2. os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。

4. os.getenv()os.putenv()函数分别用来读取和设置环境变量。,,

7.os.system()函数用来运行shell命令。

8. os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。,

12. os.curdir返回当前目录('.')

,

os.path.getsize(name):获得文件大小,如果name是目录返回0L

os.path.abspath(name):获得绝对路径

os.path.normpath(path):规范path字符串形式

os.path.join(path,name):连接目录与文件名或目录

os.path.basename(path):返回文件名

os.path.dirname(path):返回文件路径

http://hi.baidu.com/jxq61/item/e52aaddb064cb43e49e1dd88

文件夹与文件

1,取得当前目录

s = os.getcwd()

# s 中保存的是函数得到当前工作目录,即当前Python脚本工作的目录路径。

[python]view plaincopy

# -* - coding: UTF-8 -* -

importos

importtime

#在工作目录下创建一个“2012-08-06_13-20-29”这样的文件夹

folder = time.strftime(r"%Y-%m-%d_%H-%M-%S",time.localtime())

os.makedirs(r'%s/%s'%(os.getcwd(),folder))

2,更改当前目录

os.chdir( "C:\\123")

#将当前目录设为 "C:\123", 相当于DOC命令的 CD C:\123

#说明: 当指定的目录不存在时,引发异常。

3,将路径分离为目录名与文件名

fpath, fname = os.path.split( "c:\\123\\456\\test.txt" )

print fpath

print fname

显示:

c:\123\456

test.txt

# 事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在

4,将路径分离为目录文件名与扩展名

fpathandname, fext = os.path.splitext( "c:\\123\\456\\test.txt" )

print fpathandname

print fext

显示:

c:\123\456\test

.txt

5,判断一个路径( 目录或文件)是否存在

b = os.path.exists( "c:\\123\\456\\test.txt")

返回值b: True 或 False

6,判断一个路径是否文件且存在

b = os.path.isfile( "c:\\123\\456\\test.txt")

返回值b: True 或 False

7,判断一个路径是否目录且存在

b = os.path.isdir( "c:\\123\\456\\")

返回值b: True 或 False

8,获取某目录中的文件及子目录的列表

L = os.listdir( "c:\\" )

print L

显示 :

['1.avi', '1.jpg', '1.txt', 'CONFIG.SYS', 'Inetpub', 'IO.SYS', 'KCBJGDJC', 'KCBJGDYB', 'KF_GSSY_JC', 'MSDOS.SYS', 'MSOCache', 'NTDETECT.COM', 'ntldr', 'pagefile.sys', 'PDOXUSRS.NET', 'Program Files', 'Python24', 'Python31', 'QQVideo.Cache', 'RECYCLER', 'System Volume Information', 'TDDOWNLOAD', 'test.txt', 'WINDOWS']

# 这里面既有文件也有目录

1 获取某指定目录下的所有子目录的列表

[python]view plaincopy

defgetDirList( p ):

p = str( p )

ifp=="":

return[ ]

p = p.replace("/","\\")

ifp[ -1] !="\\":

p = p+"\\"

a = os.listdir( p )

b = [ xforxinaifos.path.isdir( p + x ) ]

returnb

printgetDirList("C:\\")

结果:

['Documents and Settings', 'Downloads', 'HTdzh', 'KCBJGDJC', 'KCBJGDYB', 'KF_GSSY_JC', 'MSOCache', 'Program Files', 'Python24', 'Python31', 'QQVideo.Cache', 'RECYCLER', 'System Volume Information', 'TDDOWNLOAD', 'WINDOWS']

2 获取某指定目录下的所有文件的列表

[python]view plaincopy

defgetFileList( p ):

p = str( p )

ifp=="":

return[ ]

p = p.replace("/","\\")

ifp[ -1] !="\\":

p = p+"\\"

a = os.listdir( p )

b = [ xforxinaifos.path.isfile( p + x ) ]

returnb

printgetFileList("C:\\")

结果:

['1.avi', '1.jpg', '1.txt', '123.txt', '12345.txt', '2.avi', 'a.py', 'AUTOEXEC.BAT', 'boot.ini', 'bootfont.bin', 'CONFIG.SYS', 'IO.SYS', 'MSDOS.SYS', 'NTDETECT.COM', 'ntldr', 'pagefile.sys', 'PDOXUSRS.NET', 'test.txt']

9,创建子目录

os.makedirs(   "C:\\123\\456\\789")

调用有可能失败,可能的原因是:

(1) path 已存在时(不管是文件还是文件夹)

(2) 驱动器不存在

(3) 磁盘已满

(4)磁盘是只读的或没有写权限

10,删除子目录

os.rmdir( "c:\\123\\456\\" )

产生异常的可能原因:

(1) path 不存在

(2) path 子目录中有文件或下级子目录

(3) 没有操作权限或只读

# 测试该函数时,请自已先建立子目录。

11,删除文件

os.remove(  "c:\\123\\456\\test.txt" )

产生异常的可能原因:

(1)   filename 不存在

(2) 对filename文件, 没有操作权限或只读。

12,文件改名

os.name( oldfileName, newFilename)

产生异常的原因:

(1) oldfilename 旧文件名不存在

(2) newFilename 新文件已经存在时,此时,您需要先岀除 newFilename 文件

13,读写文件

[python]view plaincopy

# -* - coding: UTF-8 -* -

# ! /usr/bin/python

spath ="D:\\myapps\\python\\HelloWorld.txt"

f = open(spath,"w")

f.write("First line 1.\n")

f.writelines("First line 2.")

f.close()

f = open(spath,"r")

forlineinf:

print("每一行的数据是:%s"% line)

f.close()

'''''

知识点: 如何读写文件

'''

14,遍历所有文件/目录

[python]view plaincopy

# -* - coding: UTF-8 -* -

# ! /usr/bin/python

importos

importos.path

# os,os.path里包含大多数文件访问的函数,所以要先引入它们.

# 请按照你的实际情况修改这个路径

rootdir ="D:\\myapps\\python\\"

forparent, dirnames, filenamesinos.walk(rootdir):

# case 1:

fordirnameindirnames:

print(" parent is: "+ parent)

print(" dirname is: "+ dirname)

# case 2

forfilenameinfilenames:

print(" parent is: "+ parent)

print(" filename with full path : "+ os.path.join(parent, filename))

''''' 知识点:

* os.walk返回一个三元组.其中dirnames是所有文件夹名字(不包含路径),filenames是所有文件的名字(不包含路径).parent表示父目录.

* case1 演示了如何遍历所有目录.

* case2 演示了如何遍历所有文件.

* os.path.join(dirname,filename) : 将形如"/a/b/c"和"d.java"变成/a/b/c/d.java".

'''

15,分割路径名与文件名

[python]view plaincopy

# -* - coding: UTF-8 -* -

# ! /usr/bin/python

importos.path

# 常用函数有三种:分隔路径,找出文件名.找出盘符(windows系统),找出文件的扩展名.

# 根据你机器的实际情况修改下面参数.

spath ="D:\\myapps\\python\\1.py"

# case 1:

p,f = os.path.split(spath);

print(" dir is: "+ p)

print(" file is: "+ f)

# case 2:

drv,left = os.path.splitdrive(spath);

print(" driver is: "+ drv)

print(" left is: "+ left)

# case 3:

f,ext = os.path.splitext(spath);

print(" f is: "+ f)

print(" ext is: "+ ext)

'''''

知识点: 这三个函数都返回二元组.

* case1 分隔目录和文件名

* case2 分隔盘符和文件名

* case3 分隔文件和扩展名

'''

16,复制文件/文件夹

[python]view plaincopy

# -* - coding: UTF-8 -* -

# ! /usr/bin/python

importshutil

importos

importos.path

src ="D:\\myapps\\python\\2.py"

dst ="D:\\myapps\\python\\2.bak.py"

dst2="D:\\myapps\\2.bak2.py"

#判断源文件是否存在,如果不存在则生成一个src测试文件

dir1 = os.path.dirname(src)

print("dir1 %s "% dir1)

if(os.path.exists(src) ==False):

os.makedirs(dir1)

f1 = open(src,"w")

f1.write("line a\n")

f1.write("line b\n")

f1.close()

#拷贝文件src到dst

shutil.copyfile(src, dst)

shutil.copyfile(src, dst2)

#读取dst

f2 = open(dst,"r")

forlineinf2:

print(line)

f2.close()

# 测试复制文件夹树

try:

srcDir ="D:\\myapps"

dstDir ="D:\\myapps2"

# 如果dstDir已经存在,那么shutil.copytree方法会报错!

# 这也意味着你不能直接用d:作为目标路径.

shutil.copytree(srcDir, dstDir)

exceptException as err:

print(err)

'''''

知识点:

* shutil.copyfile:如何复制文件

* os.path.exists:如何判断文件夹是否存在

* shutil.copytree:如何复制目录树

'''

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容