文件处理一直在路上

作者: 叫我小包总 | 来源:发表于2019-01-04 23:49 被阅读1次

一直输出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模块实现的,我们需要熟练掌握,通过编写上面的代码,总结一下常见的用法和技巧。

(1)文件路径的处理

假设有一个文件路径

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

1)获得路径

printos.path.dirname(path)

>>/users/Python/Data

2)分割文件名

printos.path.basename(path)

>>info.txt

3)分割文件的后缀

printos.path.split(path)

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

(2)判断是否为文件或者目录

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

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

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

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

|---demo_file.py—

判断是否为文件

printos.path.isfile('test01')

>>False

printos.path.isfile('demo_file.py')

>>True

判断是否为目录

printos.path.isdir('test01')

>>True

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

printos.path.exists('demo_file.py')

>>True

printos.path.exists('test01')

>>True

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

相关文章

  • 文件处理一直在路上

    一直输出python干货,是我开这个公众号的初衷,我会把这条道路坚持走到底,也希望我写的东西对你有一点作用。我把自...

  • 一种大批量数据(文件解析)的处理方案

    一、场景 下班的路上,一直在考虑如何处理大批量的文件解析。场景如下: 系统A中记录了客户的账户余额,系统B每天会定...

  • flume分布式数据采集工具概述及安装配置、使用

    背景 我们前面一直在写处理程序、sql去处理数据,大家都知道我们要处理和分析的数据是存在hdfs分布式文件存储系统...

  • Python 文件处理

    Python 读文件处理 1. readline() with 处理开闭文件&文件异常处理 readline()内...

  • java之bat处理文件(mac版)

    一、为何需要批量处理文件 bat处理文件: bat处理文件就是可以一次性执行多个命令的文件。 为什么要学bat处理...

  • 处理文件

    touch test_one —— 新建文件 cp source destination —— 复制文件 当so...

  • 文件处理

    此文仅做学习用 打开文件 读取文件 read([size]):如果文件长度超过size,那么只读取size长度的部...

  • 文件处理

    import android.app.*; import android.content.*; import an...

  • 文件处理

    1.删除文件

  • 文件处理

    1、读写方式打开,文件不存在文件会报IOerro,文件存在会打开文件(不会先清空文件已有内容)。指针在文件开头,会...

网友评论

    本文标题:文件处理一直在路上

    本文链接:https://www.haomeiwen.com/subject/anmlrqtx.html