初学Python-day13 文件处理1
IO操作
一、os模块
作用:包含了操作系统的基本功能,提供了非常丰富的用来处理文件和目录的函数或方法。
1.属性
函数名 | 函数说明 |
name |
获取操作系统的类型 |
uname |
获取操作系统的信息(linux系统) |
curdir |
返回当前的目录 |
2.方法(./ 代表当前目录)
函数名 | 函数说明 |
getcwd() | 返回当前工作目录的绝对路径 |
listdir(path) | 以列表的形式返回当前工作目录下的所有文件和目录 |
mkdir(目录名) | 创建指定的目录(如果指定的目录已存在则报错) |
rmdir(目录名) | 删除指定的目录(如果指定的目录不存在则报错) |
rename(文件名,新名字) | 重命名 |
remove(文件名) | 移除文件 |
system(命令) | 运行命令shutdow -s -f |
3. os.path的常用方法
函数名 | 函数说明 |
abspath() | 返回指定目录的绝对路径 |
join() | 拼接路径,无论是否存在 |
split() | 拆分路径,无论是否存在 |
splitext() | 获取文件的扩展名,无论是否存在 |
getsize() | 获取文件大小,返回字节 |
isdir() | 判断是否为目录 |
isfile | 判断是否为文件 |
exists() | 判断文件或者目录是否存在 |
案列:(文件夹目录为A根目录,其中子目录为B,c,子文件:第一层.py;B文件夹里有子文件,c文件夹里也有子文件)
1.递归遍历目录
1 import os
2
3
4 def demo(path):
5 get_dir = os.listdir(path)
6 for f in get_dir:
7 new_path = os.path.join(path, f) # 拼凑完整路径, 绝对路径(path+文件名)
8 if os.path.isdir(new_path): # 判断是否是目录
9 demo(new_path)
10 if os.path.isfile(new_path): # 判断是否是文件
11 print(f)
12
13
14 path = r'E:\new_pychram\oldboy36\day13文件处理\A'
15 demo(path)
2.递归统计文件大小
1 import os
2
3
4 def demo(path):
5 file_size = 0
6 get_dir = os.listdir(path)
7 for f in get_dir:
8 new_path = os.path.join(path, f) # 拼凑完整路径, 绝对路径(path+文件名)
9 if os.path.isdir(new_path): # 判断是否是目录
10 file_size += demo(new_path)
11
12 if os.path.isfile(new_path): # 判断是否是文件
13 file_size += os.path.getsize(new_path)
14 return file_size
15
16
17 path = r'E:\new_pychram\oldboy36\day13文件处理\A'
18 print(demo(path))
3.递归获取一个目录下的所有py后缀的文件,并且可以动态输入的
1 import os
2
3
4 def get_suffix(path, new_fileList, suffix):
5 get_dir = os.listdir(path)
6 for f in get_dir:
7 new_path = os.path.join(path, f)
8 if os.path.isdir(new_path):
9 get_suffix(new_path, new_fileList, suffix)
10
11 if os.path.isfile(new_path):
12 file_suffix = new_path.split('.')[-1]
13 if file_suffix.upper() == suffix.upper():
14 new_fileList.append(f)
15
16
17 def show_file(path, suffix='py'):
18 new_fileList = []
19 get_suffix(path, new_fileList, suffix)
20 if not new_fileList:
21 print('您检索的文件的扩展名{}不存在'.format(suffix))
22 return
23 print('您要检索的扩展名为{}的文件个数为{},分别是:'.format(suffix, len(new_fileList)))
24 for f in new_fileList:
25 print(f)
26
27
28 def continue_get_file():
29 global mark
30 get_continue = input('是否继续检索(y/n):')
31 if get_continue == 'y':
32 mark = True
33 else:
34 mark = False
35 print('退出系统!')
36
37
38 mark = True
39 while mark:
40 path = input('请输入要检索的路径:')
41 suffix = input('请输入要检索的文件扩展名(默认py):')
42 if os.path.exists(path):
43 if suffix:
44 show_file(path, suffix)
45 continue_get_file()
46 else:
47 show_file(path)
48 continue_get_file()
49 else:
50 print('请输入正确的路径!')
初学Python-day13 文件处理1的更多相关文章
- 初学python - 脚本文件
解析: 第一行 #!/usr/bin/env python - py脚本运行环境[用python解释器解释脚本文件-对应python安装路径] 第二行 #-*-coding:utf-8-*- - ...
- Python day13文件的读写
# 文件操作 f=open("E:\\1.txt",encoding="GBK")#打开文件 print(f.writable())#是否可写 print(f. ...
- 初学Python——文件操作第三篇
一.引言 什么?有了第二篇文件操作还不够?远远不够!而且在读完第三篇文件操作还是不够.关于文件的操作,后续的学习中将不断学习新的操作方式,使用更加合适的方法. 进入正题,上一篇讲到,Python对文件 ...
- 初学Python(一)——数据类型
初学Python(一)——数据类型 初学Python,主要整理一些学习到的知识点,这次是数据类型. #-*- coding:utf-8 -*- #整数 print 1 #浮点数=小数 print 1. ...
- 初学Python之爬虫的简单入门
初学Python之爬虫的简单入门 一.什么是爬虫? 1.简单介绍爬虫 爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等. 网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的 ...
- 初学Python常见异常错误,总有一处你会遇到!
初学Python常见错误 忘记写冒号 误用= 错误 缩紧 变量没有定义 中英文输入法导致的错误 不同数据类型的拼接 索引位置问题 使用字典中不存在的键 忘了括号 漏传参数 缺失依赖库 使用了pytho ...
- 初学Python写二进制文件
初学Python写二进制文件 把一个图片的16进制数据保存到一个txt文本,从这个txt文本读出并保存为二进制文件jpg图片文件.说明:图片读出的0xff粘贴ff到文本中,读出时是字符串的”ff”. ...
- 初学Python,需要装什么软件?
学习Python需要安装什么软件呢?也许你是一位编程小白,还不知道如何如何安装Python软件和开发环境.那么今天我们就来学一下关于Python软件.开发环境的相关知识,希望对你有用. 学Python ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- 初学Python
初学Python 1.Python初识 life is short you need python--龟叔名言 Python是一种简洁优美语法接近自然语言的一种全栈开发语言,由"龟叔&quo ...
随机推荐
- java变量类型和常量类型
变量类型 局部变量 实例变量 类变量 public class 变量类型 { //属性:变量 //必须先定义再使用,并初始化 //布尔型:默认值为false //3. 类变量(静态变量) static ...
- sublime text 3 中文排序插件
ST3 的排序不支持中文按拼音排序,所以需要搞一个插件来支持这一特性 pypinyin 这个库可以把中文转成拼音,可惜不支持 python3.3,而 ST3 内置的 python 就是 3.3 我系统 ...
- Python - 面向对象编程 - super()
前置知识 继承的详解:https://www.cnblogs.com/poloyy/p/15216652.html 子类方法的重写:https://www.cnblogs.com/poloyy/p/1 ...
- 基于Ubuntu18.04一站式部署(python-mysql-redis-nginx)
基于Ubuntu18.04一站式部署 Python3.6.8的安装 1. 安装依赖 ~$ sudo apt install openssl* zlib* 2. 安装python3.6.8(个人建议从官 ...
- 数据导出生成Excel附件使用POI的HSSFWorkbook对象
比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel.Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组 ...
- aes加解密前后端-前端
一.ajax请求前端 f12请求和响应参数效果: 1.在前端封装ajax的公共Util的js中,封装ajax请求的地方,在beforeSend方法和成功之后的回调函数success方法中: var p ...
- 74cms v3.3 后台SQL注入
注入存在于后台 admin_baiduxml.php 代码 52-63行 elseif($act == 'setsave') { $_POST['xmlmax']=intval($_POST['xml ...
- C# 中 async 和 await 的基本使用
C# 中 async 和 await 的基本使用 前言 经常在 C# 的代码中看到以 Async 结尾的方法,大概知道意为异步方法,但不知道怎么使用,也不知道如何定义. 对于"同步" ...
- 跨 Docker 宿主机网络 overlay 类型
跨 Docker 宿主机网络 overlay 类型 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 三台 CentOS 7.0 虚拟机 (Vmware Workstation 1 ...
- Redis限流
在电商开发过程中,我们很多地方需要做限流,有的是从Nginx上面做限流,有的是从代码层面限流等,这里我们就是从代码层面用Redis计数器做限流,这里我们用C#语言来编写,且用特性(过滤器,拦截器)的形 ...