python文件及文件夹操作

######################################################
#os库
######################################################
#遍历目录
os.walk(dir)
对每个目录返回一个三元组(dirpath, dirnames, filenames)
目录名,该目录下的子目录,目录下的文件
得到目录下文件的绝对路径可使用os.path.join(dirpath, name). 
例:得到目录下所有文件
for dirpath, dirnames, filenames in os.walk('F:'+os.sep+'aa'):
    print dirpath,dirnames,filenames
    for file in filenames:
        print file
#result
F:\aa ['check', 'check2'] ['AudioEngine.lua', 'CCBReaderLoad.lua', 'Cocos2d.lua', 'CocoStudio.lua', 'extern.lua']
AudioEngine.lua
CCBReaderLoad.lua
Cocos2d.lua
CocoStudio.lua
extern.lua
F:\aa\check [] ['check.plist', 'plistFile.txt', 'version.txt']
check.plist
plistFile.txt
version.txt
F:\aa\check2 [] ['json.lua']
json.lua
######################################################################
os.getcwd() 得到当前目录
os.curdir   等价于os.getcwd()  输出"."
os.pardir   父目录,输出".."
os.sep      输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep  输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep  输出用于文件路径分割的字符串";"
os.name     字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix' 
例:
print "----------"
print os.getcwd()
print os.curdir
print os.pardir
print os.sep
print os.linesep
print os.pathsep
print os.name
#result
----------
E:\eclipse\workspace\hepeng111
.
..
\




;
nt
######################################################################
os.chdir()   改变工作目录
print os.getcwd()
os.chdir('F:'+os.sep+'aa')
print os.getcwd()
#result
E:\eclipse\workspace\hepeng111
F:\aa
######################################################################
os.listdir()  以列表方式返回目录下所有的子目录及文件
例:
for i in os.listdir('F:'+os.sep+'aa'):
    print i
#result
AudioEngine.lua
CCBReaderLoad.lua
check
check2
Cocos2d.lua
CocoStudio.lua
extern.lua
######################################################################
os.stat()  获得文件目录信息
os.utime() 修改时间属性
例:访问时间和存取时间
stinfo = os.stat('F:'+os.sep+'aa'+os.sep+'extern.lua')
print stinfo.st_atime,stinfo.st_mtime
os.utime('F:'+os.sep+'aa'+os.sep+'extern.lua', (1422002036, 1389164003))
stinfo = os.stat('F:'+os.sep+'aa'+os.sep+'extern.lua')
print stinfo.st_atime,stinfo.st_mtime
#result
1422002037.73 1389164004.0
1422002036.0 1389164003.0
######################################################################
os.environ  获取环境变量
os.getenv() 用来读取环境变量
os.putenv() 用来设置环境变量 
print os.getenv("PYTHONIOENCODING")
print os.environ
#result
UTF-8
{'TMP': 'C:\\Users\\\xc5\xf4\\AppData\\Local\\Temp', 'PYTHONIOENCODING': 'UTF-8', 'COMPUTERNAME': 'HEPENG', 'VS110COMNTOOLS': 'C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\Tools\\', 'USERDOMAIN': 'hepeng', 'PSMODULEPATH': 'C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files',....} 
######################################################################
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
例:
for i in os.walk('F:'+os.sep+'aa'):
    for ii in i[2]:
        if ii=='extern.lua':
            print "tototototo"
            os.rename(i[0]+os.sep+ii, i[0]+os.sep+'exter.lua')
        elif ii=="Cocos2d.lua":
            print "iiiii"
            os.remove(i[0]+os.sep+ii)


print os.path.exists('F:'+os.sep+'aa'+os.sep+"Cocos2d.lua")
#result
iiiii
tototototo
False
######################################################################
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
注:必须删除空的目录,否则报错
######################################################################
os.access('pathfile',os.W_OK)    检验文件权限模式,输出True,False
os.chmod('pathfile',os.W_OK)    改变文件权限模式
os.system("bash command")  运行shell命令,直接显示
######################################################################
#os.path
######################################################################
os.path.split() 将路径名分解为目录和文件名,不检查文件是否存在
只是简单的返回os.sep两边的值
os.path.splitext() 将路径名分解为路径和扩展名
os.path.basename() 返回文件名
os.path.dirname()  返回文件路径
os.path.join()  连接路径,第一个绝对路径前的文件名将忽略
例:
a,b = os.path.split('F:'+os.sep+'aa'+os.sep+'extern.lua')
print a,"|||",b
print os.path.join(a,b)
a,b = os.path.splitext('F:'+os.sep+'aa'+os.sep+'extern.lua')
print a,"|||",b
print os.path.basename('F:'+os.sep+'aa'+os.sep+'extern.lua')
print os.path.dirname('F:'+os.sep+'aa'+os.sep+'extern.lua')
#result
F:\aa ||| extern.lua
F:\aa\extern.lua
F:\aa\extern ||| .lua
extern.lua
F:\aa
######################################################################
os.path.exists() 判断目录或文件是否存在
os.path.isfile() 判断是否是文件
os.path.isdir()  判断是否是目录
os.path.isabs()  判断是否是绝对路径
例:
print os.path.exists('F:'+os.sep+'aa')
print os.path.isfile('F:'+os.sep+'aa')
print os.path.isdir('F:'+os.sep+'aa')
print os.path.isabs('F:'+os.sep+'aa'+os.sep+'extern.lua')
#result
True
False
True
True
######################################################################
os.path.abspath(name) 获得绝对路径,只能用于当前目录下
os.path.normpath(path) 规范path字符串形式
例:
print os.path.normpath('F://niwo\/shi/he.py')
print os.path.abspath("..")
print os.path.abspath(".")
print os.path.abspath("xxx?")
#result
F:\niwo\shi\he.py
E:\eclipse\workspace
E:\eclipse\workspace\hepeng111
E:\eclipse\workspace\hepeng111\xxx?
######################################################################
os.path.getsize(name) 获得文件大小,如果name是目录返回0L
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
例:
print os.path.getsize('F:'+os.sep+'aa'+os.sep+'extern.lua')
print os.path.getatime('F:'+os.sep+'aa'+os.sep+'extern.lua')
print os.path.getmtime('F:'+os.sep+'aa'+os.sep+'extern.lua')
#result
2587
1422002037.73
1389164004.0
######################################################################
#shutil fp
######################################################################
shutil.copy(src,dst) 
将文件src(只能是文件名)复制到src(文件名或目录)
shutil.copyfile(src,dst) 复制文件
shutil.copyfileobj(f1,f2 [,length]) 复制文件流。将流f1中所有数据复制到流f2
shutil.copytree(src,dst) 复制整个目录下的文件到dst,dst必须是个不存在的目录名
shutil.move(src,dst) 将文件或目录从src移动到dst,如果dst不是目录,则是重命名
shutil.rmtree(path)  删除目录树,包括空目录
例:
filename1 = 'F:'+os.sep+'aa'+os.sep+'extern.lua'
filename2 = filename1 + ".copy"
print filename1, "=>", filename2


shutil.copy (filename1, filename2)
if os.path.isfile (filename2): print "Success"


dirname1='F:'+os.sep+'aa'+os.sep+'check2'
dirname2 = dirname1 + ".copy"
print dirname1, "=>", dirname2


shutil.copytree(dirname1, dirname2)
if os.path.isdir (dirname2): print "Success"


shutil.move(filename1,dirname2)
if os.path.isfile(dirname2+os.sep+os.path.basename(filename1)): print "Success"
shutil.move(dirname1,dirname2)
if os.path.isdir (dirname2+os.sep+os.path.basename(dirname1)): print "Success"
#result
F:\aa\extern.lua => F:\aa\extern.lua.copy
Success
F:\aa\check2 => F:\aa\check2.copy
Success
Success
Success
######################################################################
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值