首页 > 代码库 > 【python】文件的输入和输出
【python】文件的输入和输出
1.os模块
2.os.path 模块
3.实例
1. os模块
对文件系统的访问大多通过python的os模块实现,其中os 模块负责大部分的文件系统操作,包括删除/重命名文件,遍历目
录树,管理文件访问权限等。
2.os.path 模块,os.path完成一些针对路径名的操作,包括管理和操作文件路径名中的各个部分,获取文件或子目录信息,文件路径查询等操作。
3.实例
3.1 实例1:os模块和path模块接口使用
# encoding:utf-8 ‘‘‘ Created on 2014-6-5 @author: Administrator ‘‘‘ import os if __name__ == "__main__": for tempdir in (‘/tmp‘, r‘c:\temp‘): if os.path.isdir(tempdir): break else: print "no temp directory is available" tempdir = ‘‘ if tempdir: os.chdir(tempdir) cwd = os.getcwd() print "***current temporary directory***" print cwd print "***creating example directory..." os.mkdir("example") os.chdir("example") cwd = os.getcwd() print "***new working directory..." print cwd print "***original directory listing:" print os.listdir(cwd) print "***creating test file" fobj = open("test", "w") fobj.write("%s%s" % ("line1", os.linesep)) fobj.write("%s%s" % ("line2", os.linesep)) fobj.close() print "***updating directory listing:" print os.listdir(cwd) print "***renaming test to filetest.txt" os.rename("test", "filetest.txt") print "***updating directory listing:" print os.listdir(cwd) path = os.path.join(cwd, os.listdir(cwd)[0]) print "***full file pathname:" print path print "***(pathname,basename)=" print os.path.split(path) print "***(filename,extension)=" print "***basename:", os.path.basename(path) print os.path.splitext(os.path.basename(path)) print "***displaying file contents:" fobj = open(path) for eachline in fobj: print eachline fobj.close() print "***deleting test file" os.remove(path) print "***updating directory listing:" print os.listdir(cwd) print "deleting test directory" os.chdir(os.pardir) os.rmdir("example") print "***Done!" name = raw_input(u"请输入名字:".encode("gbk")) count=1; for mytuple in os.walk(name, True): print "%s:%s" %(count,mytuple[0]) count=count+1 print "%s:%s" %(count,mytuple[1]) count=count+1 print "%s:%s" %(count,mytuple[2]) count=count+1
3.2 实例2:目录文件深度遍历
"""文件目录深度遍历""" def listdir(mydir, myfile): global fmt global filenum lists = os.listdir(mydir) # 列出目录下的所有文件和目录 for line in lists: filepath = os.path.join(mydir, line) if os.path.isdir(filepath): # 如果filepath是目录,则再列出该目录下的所有文件 myfile.write(fmt + line.decode("gbk") + ‘\\‘ + ‘\n‘) print fmt + line.decode("gbk") + ‘\\‘ + ‘\n‘, filenum = filenum + 1 # 格式化输出目录 tmp = fmt fmt = fmt + 4 * "-" listdir(filepath, myfile) fmt = tmp else: # 如果filepath是文件,直接列出文件名 myfile.write(fmt + line.decode("gbk") + ‘\n‘) # 显示中文文件 print fmt + line.decode("gbk") + ‘\n‘, filenum = filenum + 1 if __name__ == ‘__main__‘: mydir = raw_input(‘please input the path:‘) listfile = open(‘listfile.txt‘, ‘w‘) listfile.write(str(mydir).decode("gbk") + ‘\n‘) listdir(str(mydir), listfile) listfile.write(‘all the file num is ‘ + str(filenum)) listfile.close()
结果:
E:\KuGou ----Beyond - 不再犹豫.mp3 ----Beyond - 喜欢你.mp3 ----Beyond - 无尽空虚.mp3 ----Beyond - 海阔天空.mp3 ----Beyond - 谁伴我闯荡.mp3 ----Beyond、黄家驹 - 海阔天空.m4a ----Cache--------3eb439fd4096a2b76ae8c1020f6c4007.kg! ----Lyric--------Beyond - 不再犹豫-2bcba2349cd515bf1110613c9a44acf9.krc --------Beyond - 光辉岁月-4dc283c7ac7bd5d9bf9b72f167d4ec7d.krc --------Beyond - 喜欢你-a48d906b0210cefc2d5d12353d3e7488.krc --------Beyond - 无尽空虚-6ade279c2a7da6ce893e581ff22f7817.krc --------Beyond - 海阔天空-f87ab6af058e9c5864a81a78e9f62967.krc --------吴雨霏 - 今夜烟花灿烂-5810060a70bf1f583f92eb5d541d65e4.krc --------周华健 - 让我欢喜让我忧-71c82c68ebab8ca9f97f460e7e8a58fa.krc ----Temp--------1d4182a7b02d9ea3185ddbbdece48473.kgtemp --------2bcba2349cd515bf1110613c9a44acf9.kgtemp --------4dc283c7ac7bd5d9bf9b72f167d4ec7d.kgtemp ----五月天 - 我不愿让你一个人.mp3 ----刘德华 - 一起走过的日子.mp3 ----刘德华 - 冰雨.mp3 ----刘德华 - 北国之春.mp3 all the file num is 96
3.3 实例3: os.walk 目录树
"""文件目录广度遍历""" def walkdir(mydir,fileinfo,topdown=True): for root, dirs, files in os.walk(mydir, topdown): for name in files: print(name) fileinfo.write(name + ‘\n‘) for name in dirs: print(os.path.join(name)) fileinfo.write(os.path.join(root,name) + ‘\n‘) if __name__ == ‘__main__‘: mydir = raw_input(‘please input the path:‘) walkfile = open(‘walkfile.txt‘, ‘w‘) walkfile.write(str(mydir).decode("gbk") + ‘\n‘) walkdir(str(mydir), walkfile) walkfile.close()
说明:
1、raw_input 接收中文路径输入,在windows下需要保证eclipse控制台设置编码为GBK,具体设置为,右键单击需要运行的python文件,选择Run as-----Run configurations
设置Common编码为GBK,否则raw_input 结果为乱码
2. 保存文件路径名到文件中时,需要使用str.encode(“gbk”)的encode方式,同时保证写入文件路径名的文件格式为GBK,否则可能出现中文乱码
3.os.walk()调用的返回结果为一个对象,其中每个元素为一个三元组,三元组分别为(目录,子目录,目录下文件),(子目录,子目录下的子目录,子目录下的文件)……
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。