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

文件处理一直在路上

作者头像
stormwen
发布2019-08-05 20:17:19
4800
发布2019-08-05 20:17:19
举报
文章被收录于专栏:公众号:googpy公众号:googpy

一直输出python干货,是我开这个公众号的初衷,我会把这条道路坚持走到底,也希望我写的东西对你有一点作用。我把自己每天学习python时遇到的各种问题记录下来,分享给大家,避免入门的小伙们入门走弯路。

1. from __future__ import division

导入未来的支持语言特征中division(精确除法),当我们在程序中没有导入该特征时,“/”操作符执行的只能是整除,也就是取整数,只有当我们导入division(精确算法)以后,“/”执行的才是精确算法。

上面这段话是什么意思呢?用一个例子来解释一下。

Python里的除号默认是整除

3/2

1

那么,加上了上面那一段后,除号就变成了正常的小数除法了

from __future__ import division print(3/2)

1.5

2.文件处理入门

如何统计某一路径下文件夹和文件?比如,我的电脑上安装的是python3.7,那么搜索整个py3.7下面的所有目录(包括子目录),里面的所有的文件。

根据题目要求,先把目录下的全部文件和目录列出,若是子目录,就继续寻找该目录下的子文件,然后不断重复刚才的过程,因为我们不知道有多少层嵌套的子目录,最好用递归。

大家先看一下我写的代码。

#列出目录下所有的文件和子目录内的文件 def listFiles(path='.'): #传入路径,默认值为当前目录 if not os.path.exists(path): #判断是否有效目录 print('path error') return None file=' ' try: for file in os.listdir(path): #列出目录下所有文件和目录 filepath=os.path.join(path,file) #构造全路径文件 if os.path.isdir(filepath): #判断是否为目录 print(filepath) #打印目录 listFiles(path=filepath) #继续递归子目录 elif os.path.isfile(filepath): #判断是否为文件 print(filepath) getFileSize(filepath) #获得文件大小 except TypeError: #若出错,打印出错的文件 print(file)

第二中解法有点骚,大家也看看:

import os DIR = 'D:/Program Files/python37' #要统计的文件夹 print('dirnum:',len([name for name in os.listdir(DIR) if os.path.isdir(os.path.join(DIR,name))])) print('filenum:',len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR,name))])) #打开文件 path = 'D:/Program Files/python37' dirs = os.listdir(path) #输出所有文件和文件夹 for file in dirs: print(file)

Python中对文件系统的访问大多是通过os模块实现的,我们需要熟练掌握,通过编写上面的代码,总结一下常见的用法和技巧。

假设有一个文件路径

path='/users/Python/Data/info.txt'

1)获得路径

print os.path.dirname(path)

>>/users/Python/Data

2)分割文件名

print os.path.basename(path)

>>info.txt

3)分割文件的后缀

print os.path.split(path)

>>('/users/Python/Data', 'info.txt')

判断是否为文件或者目录

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

举例说明,假设我们有一个这样的目录结构:

|---test01--------

|---test02--------

|---demo_file.py—

判断是否为文件

print os.path.isfile('test01')

>>False

print os.path.isfile('demo_file.py')

>>True

判断是否为目录

print os.path.isdir('test01')

>>True

判断文件或者目录是否存在

print os.path.exists('demo_file.py')

>>True

print os.path.exists('test01')

>>True

细心的小伙伴们还注意到上面例子的代码中还涉及异常处理,这部分的内容我放到下次再详细介绍,现在我们刚刚入门,不要贪多,应该稳扎稳打。

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

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

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

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

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