python文件操作及引申的代码行数统计

2023-05-16

文件操作一般包括文件的读写,文件夹的创建,文件夹的删除等。

第一部分:python文件读写的基本操作
    python打开文件一般使用 open函数:
         open ( file , mode='r' , buffering=-1 , encoding=None , errors=None , newline=None , closefd=True , opener=None )
file为文件名或文件描述符;
mode为打开方式:'r'为只读,'w'为可写,他会删除文件中原有的东西,'x'写模式,只能在文件不存在的时候创建,存在会报错,'a'写模式,在文件尾部追加,'b'二进制模式,'t'默认方式
buffering为缓存的大小,一次最大的写入量
encoding为文件模式比如UTF-8等
errors为错误信息
newline为设置换行的模式,只在文本模式生效
closefd:如果给定文件名,该项为false,则关闭文件时文件描述符处于打开状态,如果给定文件名,则该项必须为true
file='test.txt'
a=open(file,'rb')
print(a.read()) 
a.close()
可以使用with as 语句,做到事先设置,事后清理的工作。
with所求值的对象必须要有一个__enter()__方法,一个__exit()__方法,with之后的语句被调用时,调用__enter()__方法,返回值将被赋给as后的对象,作用域结束后将调用__exit()__方法。这样会省去手动关闭的麻烦
file='test.txt'
with open(file,'rb') as fil:
	print(fil.read())
第二部分:文件夹的操作
文件夹操作一般需要引入os模块或者shutil模块,详细介绍参见https://www.cnblogs.com/tkinter/p/5631213.html
将文件的操作封装为一个类,其成员参数包括当前的路径path,当前文件夹下的文件列表fileList,当前文件夹下的所有文件路径allFileName
主要部分为获取文件夹下的所有文件,如果类型为文件夹,需要递归文件夹统计

import os
class fileTest(object):
	allfilename=[]#存放所有文件路径
	fileCount={}#存放不同文件的行数
	filelist=[]#存放当前路径下的文件和文件夹名称
	filterList=[]#过滤项
	path=''#路径
	def getCurrentPath(self):#获取当前的工作路径
	    self.path=os.getcwd()
	    return self.path
	def getAllFile(self):#获取工作路径下的所有文件和文件夹
		self.fileList=os.listdir(self.path)
		return self.fileList
	def setPath(self,pathName):#设置工作路径
		self.path=pathName
		return self.path
	def getAllFileName(self):#得到当前目录下的所有文件路径
		temp=self.getAllFile()
		for files in temp:
			files=self.path+'\\'+files
			print(files)
			if os.path.isdir(files):#如果是文件夹需要递归
				temFileTest=fileTest()
				temFileTest.setPath(files)
				self.allfilename+=temFileTest.getAllFileName()
			else:#不是文件夹直接添加
				self.allfilename.append(files)
		return self.allfilename
	def getLineCount(self):
		self.getAllFileName()#更新所有的文件
		for file in self.allfilename:
			if os.path.splitext(file)[1] in self.filterList:
				with open(file,'rb') as f:
					self.fileCount[file]=len(f.readlines())
	def getAllCount(self):#统计总的行数
		self.getLineCount()
		cnt=0
		for value in self.fileCount.values():
			cnt+=value
		return cnt


test=fileTest()#创建对象
print(test.getCurrentPath())#打印当前的工作路径
test.setPath('E:\PythonData')#设置处理的路径
print(test.getAllFile())#打印设置路径下的文件夹和文件名
print(test.getAllFileName())#打印路径下的所有文件路径
test.filterList=['.py']#设置过滤项
test.getLineCount()#得到满足过滤条件的文件的行数
print(test.fileCount)#打印相关行数
print(test.getAllCount())#打印总的行数


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python文件操作及引申的代码行数统计 的相关文章

随机推荐

  • unity寻路插件(A* Pathfinding)小结

    A Pathfinding 详细使用教程 基本功能 1 astarpath cs 核心组件 xff0c 相当于 路 xff0c 场景里应该只存在一个 2 Seeker cs 相当于一个代理 xff0c 寻找路径 xff0c 需要绑定在每一个
  • Socket网络通信C++编程总结

    概述 Socket编程有三种 xff0c 流式套接字 xff08 SOCK STREAM xff09 数据报套接字 SOCK DGRAM 原始套接字 SOCK RAW 前两者较常用 xff0c 这里简单总结前两种编程步骤以及一些参考资料 编
  • 【STM32+cubemx】0029 HAL库开发:HMC5883L磁力计的应用(电子指南针)

    今天我们来学习电子磁力计HMC5883L的使用 先介绍磁力计的基础知识 xff0c 再给一个获取磁力计数据的例子 xff0c 最后讲解HMC5883L磁力计的校准 xff0c 以及一些使用中的经验 1 xff09 HMC5883L磁力计的基
  • stm32F103R6之BKP(备份寄存器)

    目录 概述 侵入检测 RTC校准 概述 Stm32F103有42个16位的备份寄存器 他们处在备份域里 xff0c 当VDD电源被切断 xff0c 他们仍然由VBAT维持供电 当系统在待机模式下被唤醒 xff0c 或系统复位或电源复位时 x
  • Stm32F103R6之控制器局域网

    目录 概述 双CAN bxCAN工作模式 CAN协议特点 xff1a ISO11898标准CAN物理特性 CAN协议帧 概述 bxCAN是基本扩展CAN Basic Extended CAN 的缩写 xff0c 它支持CAN协议2 0A和2
  • 如何输出一个数的二进制数

    实现思想 xff1a 二进制数是以bit为操作数 xff0c 所以要想将一个数转换为二进制数 xff0c 我们需要先要将输入的数字转化为二进制数 xff0c 然后从高位到低位判断每一位是 1 还是 0 xff0c 最后把对应的 1 和 0
  • 使用libcurl库编写HTTP客户端(包括GET/POST/HTTPS)

    最近在写一个应用程序 需要与HTTP服务器进行数据交互 于是乎自己写了一个类似wget的功能的客户端 实现很简单 但是功能不给力 只可基本功能 于是又在网上找了找 发现使用libcurl库很方便 很强大 比起wget之类的 强大不是一点点
  • 修改系统默认shell为bash

    xfeff xfeff 从 ubuntu 6 10 开始 xff0c ubuntu 就将先前默认的bash shell 更换成了dash shell xff1b 其表现为 bin sh 链接倒了 bin dash而不是传统的 bin bas
  • 如何解决Reporting Services目录数据库文件存在的问题

    出处 xff1a http blog sina com cn s blog 6bace3cc0101jlxv html 错误提示 xff1a 自检时提示 Reporting Services目录数据库文件存在 失败 xff0c Report
  • 无线射频专题《射频合规,2.4GHz WIFI测试指标详解》

    目录 引言 Transmitter Power 发送功率 Transmit Spectrum Mask 发送信号频谱模版 Frequency Error 频率误差 EVM 矢量误差幅度 Band Edges and harmonics 频带
  • 获取当前访问的路径

    String returl 61 request getRequestURL 43 request getQueryString 61 61 null 34 34 34 34 43 request getQueryString
  • 抓取百度关键词排名

    最近在做百度关键词排名的功能 xff0c 发现网上资源比较少 xff0c 于是自己琢磨了一下 xff0c 写一下笔记 xff1b 本文重点在于提供思路 xff0c 请不要过分依赖 xff0c 本文主要靠抓取页面标签来完成 xff0c 如果百
  • 抓取百度关键词排名、标题、连接、描述

    抓取百度关键词排名 标题 连接 描述 转载请标明出处 最近在做百度关键词排名的功能 xff0c 发现网上资源比较这里写代码片少 xff0c 于是自己琢磨了一下 xff0c 写一下笔记 xff1b 本文重点在于提供思路 xff0c 请不要过分
  • Windows Server 2008远程桌面端口的修改

    Windows Server 2008远程桌面端口系统默认的是3389端口 xff0c 但出于安全考虑 xff08 谁都不希望任何都可以远程连接到自己的服务器吧 xff0c 哈哈 xff09 xff0c 经常我们把系统默认的3389端口更改
  • jsp 登陆成功后,显示登录的用户名

    首先在登陆界面将用户名保存起来 xff0c 我这里是将用户名提交到Servlet然后再进行保存 xff0c 从登录界面取用户参数 String uname 61 request getParameter 34 userName 34 req
  • 背景图片随网页的变化而变化(指大小)

    lt DOCTYPE HTML PUBLIC 34 W3C DTD HTML 4 01 Transitional EN 34 gt lt html xmlns 61 34 http www w3 org 1999 xhtml 34 gt l
  • 为什么vscode用久了电脑速度变慢?

    1 vscode 插件占用的内存 1 已经安装的插件 2 插件占用内存 我可以看到 xff0c vs code 这个程序下面有多个进程在跑 xff0c 插件占用的内存比我电脑剩下所有占用的内存还要高 xff0c 但是vs code 性能还是
  • ROS基础学习(一)---创建工作空间

    工作空间 xff08 workspace xff1a 是一个存放工程开发相关文件的文件夹 src xff1a 代码空间 xff08 Source Space build 编译空间 xff08 Build Space devel 开发空间 x
  • 一个简单的爬虫程序,爬取网站的图片

    最简单的爬虫是分析网页 xff0c 如果要爬取图片 xff0c 就要将图片在网页中的格式进行分析 xff0c 取到图片的连接 xff0c 接着下载图片 xff1b 由于网页中还会链接到其他的网页 xff0c 所以需要将其中的所有网页取出 x
  • python文件操作及引申的代码行数统计

    文件操作一般包括文件的读写 xff0c 文件夹的创建 xff0c 文件夹的删除等 第一部分 xff1a python文件读写的基本操作 python打开文件一般使用 open函数 xff1a open file mode 61 39 r 3