python 的IO文件操作总结,,在项目开发过程中,时常需


在项目开发过程中,时常需要对目录、文件进行相关的操作,比如读取文件的内容,遍历目录等等。在Python中也提供了强大的类库支持这些I/O操作。本文将记录Python中对文件、目录的一些常见操作手法。涉及文件、目录操作的模块 os、os.path、shutil

文件、目录的创建、删除

创建目录可以简单的使用下面的语句即可完成(支持2层目录的创建):

os.mkdir("test")os.mkdir("test/test")

相对于目录的创建而言,目录的删除就会有点小陷阱了,对于一个空目录的删除,可以简单的使用下面的语句完成:

os.rmdir("test")

但是,如果该目录不为空将会抛出“Directory not empty: 'test'”异常了。如果在其他语言中可能需要一层一层递归进行删除,但是在Python中,有个神器提供目录树的删除的功能,可以使用下面的神器解决:

shutil.rmtree("test")

相对于目录的操作,文件的读取(创建)与删除就简单多了,可以使用下面的语句完成:

os.open("test/test.py",1)os.remove("test/test.py")

但是,当文件不存在的时候,os.open将会抛出“ No such file or directory: 'test/test.py'”异常,那么我们可以使用python官方推荐的文件读取(创建)操作手法(如果文件存在就是追加模式操作,flag:"r","w","a"):

with open("test/test.py", "a") as file_obj:    file_obj.write("#/usr/bin/env python")

以上这种的写法就无需执行关闭file_obj.close(),详细内幕请参考with的用法。

遍历目录获取文件

result = []for path,dirs,files in os.walk("test"):    for file in files:        result.append(path+"/"+file)

打印result,可以看到该目录下所有文件(包括子目录),如本人的信息如下:

['test/test.py', 'test/test1/tes1.py', 'test/test1/nohup.out']

我们也可以针对上面的例子,稍加修改,只需获取py文件,代码片段如下:

result = []for path,dirs,files in os.walk("test"):    for file in files:        if file.endswith(".py"):            result.append(path+"/"+file)

打印result,可以看到该目录下所有文件(包括子目录),如本人的信息如下:

['test/test.py', 'test/test1/tes1.py']

总结

本文记录了在Python中常用的I/O操作,一些其它对文件或目录验证操作或详细信息的获取就没有详细举例说明,只能当作抛砖引玉了,希望对您有用。

文件出处: http://www.cleverdeng.com/article/Python%20_chang_jian_de_%20I/O%20_cao_zuo_chang_yong_shou_fa

评论关闭