前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python文件处理进阶篇

Python文件处理进阶篇

作者头像
stormwen
发布2019-08-05 11:04:03
5580
发布2019-08-05 11:04:03
举报

【这是googpy的第56篇原创】

昨天文章结尾的时候,我说Python使用seek函数报错:io.UnsupportedOperation:can’t do nonzero end-relative seeks,解决的办法是在open函数里加入“rb”,大家觉得原因是什么呢?

我下去查了一下,这个问题主要是由Python2和Python3的区别造成的,换言之,如果在Python2中是不会报错的,但在Python3中则会报错。因为Python3在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,如果从文件尾计算就会引发异常。

文件处理这部分内容多而杂,看书的话又抓不住重点,下面我把自己学习过程中觉得重要的、经常用到的内容写出来,和大家一起学习一下。

文件的重命名和删除文件

Python的os模块提供了执行文件处理操作的方法,比如说重命名和删除。要使用这个模块,首选要导入它,然后才能调用相关的功能。

1)重命名文件

rename()方法,语法:

os.rename(current_file_name, new_file_name)

需要两个参数,当前的文件名和新文件名

例:将一个已经存在的test1.txt文件重命名为test2.txt

import os
 
# 重命名文件test1.txt到test2.txt。
os.rename( "test1.txt", "test2.txt" )

2)删除文件

remove()方法,语法:

os.remove(file_name)

需要提供要删除的文件名作为参数

例:删除一个已经存在的test2.txt文件

import os
 
# 删除一个已经存在的文件test2.txt
os.remove("test2.txt")

但是在删除之前,最好先判断test2.txt文件是否存在,即在上面代码前加入:

if os.path.exists('test2.txt'):
    os.remove('test2.txt')

创建并访问目录

这里依然用到OS模块,即使所有文件都包含在各个不同的目录下,Python的os模块也能轻松处理,帮你创建、删除和更改目录。

1)创建目录

mkdir()方法,语法:

os.mkdir("newdir")

在当前目录下创建新的目录,需要提供一个包含将创建目录的名称作为参数

例:在当前目录下创建一个新目录

为了保证思维严谨,最好在创建之前先判断目录是否存在,否则会报错。

import os

if not os.path.exists('test01'):
    os.mkdir('test01')

2)列出当前目录下的所有文件和文件夹

import os

print(os.listdir('.'))

如果我们要知道某个成员是文件夹还是文件,可以用下面这种方法:

print(list(os.walk('.')))

3)改变当前目录

chdir()方法,语法:

os.chdir("newdir")

需要提供一个新的目录名称作为参数

例:

import os
 
# 将当前目录改为"/home/newdir"
os.chdir("/home/newdir")

4)显示当前目录

getcwd()方法,语法:

os.getcwd()

例:

import os
 
# 给出当前的目录
os.getcwd()

5)删除目录

rmdir()方法,语法:

os.rmdir('dirname')

目录名称以参数传递。需要注意的是,在删除当前目录之前,它的所有内容应该先被清除。

例:

import os
 
# 删除”/tmp/test”目录
os.rmdir( "/tmp/test"  )

判断是否为文件或目录

这部分内容,我看网上也有将os.path()模块所有的方法都进行总结的,总结的很好,如果我这里再给出来,意义不大。我们平时写代码的时候可以根据需求,查表格就可以了。

那么我想说的是,在文件处理我的时候,特别是递归处理目录下的多个文件或者嵌套子目录的时候,要先判断一下这个是文件还是目录。

1)判断是否为文件

print os.path.isfile('test01')
>>False

2)判断是否为目录

print os.path.isdir('test01')
>>True

3)判断文件或者目录是否存在,有的时候我们不在乎这个到底是文件还是路径,我们只关心它是否存在,有个简便的方法:

print os.path.exists('test01')
>>True

最后,可能大家看一篇文章只要3、5分钟,而我却要花50-100倍的时间去准备去写,虽然在学校时间相对多一点,但是毕竟还要做课题研究,要毕业。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 googpy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档