python 目录管理与文件管理
目录管理(os)
system:执行系统命令
- # 执行系统命令
- os.system('cls')
- # 执行系统命令
name:获取操作系统名称
- # 操作系统名称,nt代表Windows, posix代表类unix
- print(os.name)
- # 操作系统名称,nt代表Windows, posix代表类unix
environ
- # 获取环境变量
- env = os.environ
-
- print(env['path'])
- print(env.get('path'))
- print(env.get('HELLO'))
- # 获取环境变量
getcwd:# 获取当前工作目录
- print(os.getcwd())
mkdir:创建目录
- # 创建目录,只能是单层目录
- # os.mkdir('hello')
-
- # 这里会失败
- # os.mkdir('a/b/c')
- # 创建目录,只能是单层目录
makedirs:创建目录,会创建中间目录
- # 会创建中间目录
- # os.makedirs('a/b/c')
rmdir:删除目录,只能删除空目录
- # 删除目录,只能删除空目录
- # os.rmdir('hello')
- # 当目录中有其他文件或目录时删除失败
- # os.rmdir('a')
rename:修改文件名(可以是目录)
- # 修改名字,可以是目录 (old, new)
- # os.rename('a', 'c')
- # 也可以修改文件名
- # os.rename('test.py', '123.py')
- # 修改名字,可以是目录 (old, new)
stat:查看文件信息
- # 查看文件信息
- print(os.stat('123.py'))
listdir:列出直接子文件
- # 列出直接子文件
- print(os.listdir('c'))
- # 列出直接子文件
相对目录、绝对目录
- 相对目录:就是有参考的目录
. 表示当前目录,通常 ./ 可以省略
.. 表示上一级目录 - 绝对目录:windows中以某个盘符开头,类unix系统中以'/'开头的目录
目录分隔符:
类unix:/
windows:/ 或 \
建议:统一使用 '/' 表示 - 说明:在文件操作时,使用相对目录和绝对目录都可以
- 相对目录:就是有参考的目录
path
- from os import path
-
- # 拼接目录
- print(path.join('abc/def', '123.py'))
-
- # 提取文件后缀(切割文件名与后缀)
- name, ext = path.splitext('789.py')
- print(name, ext)
-
- # 提取目录名(最后一个目录分隔符的前面内容)
- print(path.dirname('123/456/789.py'))
-
- # 提取文件名(包括后缀)
- print(path.basename('123/456/789.py'))
-
- # 切割文件名和目录
- print(path.split('123/456/789.py'))
-
- # 判断文件是否存在(可以是目录)
- print(path.exists('123.py'))
-
- # 判断是否是目录文件
- print(path.isdir('c'))
-
- # 判断是否是普通文件
- print(path.isfile('123.py'))
-
- # 获取普通文件大小
- print(path.getsize('01-os.py'))
- # 不可以获取目录大小,始终是0
- print(path.getsize('c'))
练习:自己实现目录大小的统计,需要使用递归
文件管理
打开文件(open)
示例:
- fp = open('00-test.txt', 'r')
参数:
- 参数1:文件路径名
参数2:打开方式
参数3:编码格式,通常可以不指定,系统会自动识别处理
打开方式:
- r:只读方式,文件不存在会报错
w:只写方式,文件不存在创建文件,文件存在清空内容
a:追加方式,文件不存在则创建,文件存在直接打开(不会清空内容),只能向最后追加内容
r+:在r方式下添加写的功能
w+:在w方式下添加读的功能
a+:在a方式下添加读的功能
在上面的模式上添加b,表示二进制方式打开:rb、wb、ab、rb+、wb+、ab+
1.文件的读写数据全部是bytes类型,没有添加b的方式全部是str类型
编码方式:
- ascii:美国信息交换标准代码
ansi:扩展的ascii
gb2312:中国的ansi
gbk:扩展的gb2312
unicode:是一套理论,实现方式不限
utf-8:可变长度的unicode实现,对中文的支持比较友好
关闭文件(close)
- # 关闭文件
- fp.close()
- # 关闭文件
文件读写
- # 读取指定长度内容
- # ret = fp.read(3)
- # 写入内容
- fp.write('hello')
-
- # 读取一行,包括换行符
- # print(fp.readline())
-
- # 读取所有行,返回一个列表
- print(fp.readlines())
-
- # 是否可读
- print(fp.readable())
-
- # 是否可写
- print(fp.writable())
文件指针
- # 返回文件指针的操作位置
- print(fp.tell())
-
- # 设置偏移
- # 参数1:偏移量
- # 参数2:参考位置,0:开头,1:当前,2:末尾
- # 定位到末尾
- fp.seek(0, 2)
带b的方式seek没有异常;不带b的时候,相对于当前位置无法偏移,相对于末尾只能偏移0
文件删除
- import os
- os.remove('02-test.py')
练习:(递归)删除一个目录
- import os
练习
1.实现一个拷贝文件的功能,提醒:要考虑超大文件问题,如:依次读取1024字节,循环读取
2.递归删除一个文件夹
3.统计一个文件夹的大小
4.拷贝一个文件夹
5.移动一个文件夹
6.目录整理
一个目录中有各种文件,也有文件夹
将所有的文件夹统一放到dir目录下
将没有后缀的文件统一放到others目录下
将有后缀的文件放到后缀名大写的文件夹下
- # 处理前
test/
dir1/
dir2/
1.py
2.py
3.txt
4.pdf
123
456
# 处理后
test/
DIR/
dir1/
dir2/
PY/
1.py
2.py
TXT/
3.txt
PDF/
4.pdf
OTHERS/
123
456
友情提醒:中间使用的所有文件目录的判断都需要进行拼接。
python 目录管理与文件管理的更多相关文章
- Python标准库04 文件管理 (部分os包,shutil包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在操作系统下,用户可以通过操作系统的命令来管理文件,参考linux文件管理相关命令 ...
- python 包管理工具
python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...
- Linux命令工具基础02 文件及目录管理
文件及目录管理 文件管理不外乎文件或目录的创建.删除.查询.移动,有mkdir/rm/mv 文件查询是重点,用find来进行查询:find的参数丰富,也非常强大: 查看文件内容是个大的话题,文本的处理 ...
- python包管理-distutils,setuptools,pip,virtualenv等介绍
python包管理-distutils,setuptools,pip,virtualenv等介绍 对于每个编程语言来说打包和发布开发包往往非常重要,而作为一个编程者能够快速容易的获得并应用这些由第三方 ...
- Python包管理工具和多版本环境管理
1. Python包管理工具 在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_instal ...
- linux学习之路--(四)文件,目录管理
1.mkdir:创建空目录 -p: -v:verbose mkdir -pv /mnt/test/x/m /mnt/test/y mkdir -pv /mnt/test/{x/m,y} 命令行展开: ...
- Python 模块管理1
Python 模块管理 导入新的模块 创建一个 calculate.py 文件 print('ok') def add(x,y): return x + y def sub(x,y): retur ...
- 【Python系列】Python包管理器pip
缘起 这段时间忙着给朋友搞事,忙了好长一段时间,木有写博客很长时间了.之间做了两个东西,一个是邮件自动发送脚本,一个是数据处理软件.其中,在做数据处理软件的时候使用到了非Python系统库,是两个第三 ...
- python 包管理工具Pipenv
Kenneth Reitz的最新工具Pipenv可以用于简化Python项目中依赖项的管理. 它汇集了Pip,Pipfile和Virtualenv的功能,是一个强大的命令行工具. 入门 首先使用pip ...
随机推荐
- ajax-php跨域请求
php: function __construct(){ // 指定允许其他域名访问 header("Access-Control-Allow-Origin: *"); heade ...
- Centos 安装freesurfer fsl matlab 等软件---转自网络
freesurfer: freesurfer好安装,只需要下载官网源码包,如freesurfer5.3.tar.gz 下载至本地,解压: tar zxvf freesurfer5.3.tar.gz - ...
- javascript字符串转数字
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 渗透测试 - KALI Linux 学习 - kali linux如何启动METASPLOIT服务
kali 2.0 已经没有metasploit 这个服务了,所以service metasploit start 的方式不起作用. 在kali 2.0中启动带数据库支持的MSF方式如下: #1 首先 ...
- "a++" 与 "++a" 的区别-演示
两种表示方法经常容易混淆, 在这里将利用演示程序来揭示两者之间的区别, 演示代码如下 int main() { ; cout << "a=1 " << &q ...
- java将base64解析图片保存到本地。
将base64解析图片保存到本地的两个方法 /** * base64转图片 * @param base64str base64码 * @param savePath 图片路径 * @return */ ...
- 将PostgreSQL数据库的表导入到elasticsearch中
1.查看PostgreSQL表结构和数据信息 edbstore=# \d customers Table "edbstore.customers" Column | Type | ...
- Oracle 即时客户点下载以及简单连接数据库的方法
1. 下载方法 百度 oracle client 第一个即可 2. 下载地址为: https://www.oracle.com/database/technologies/instant-client ...
- GitHub从小白到熟悉<二>
创建 仓库
- python_0基础开始_day10
第十节 一.函数进阶 动态参数 *a r g s —— 聚合位置参数,动态位置参数 默认返回的是tuple元组 def eat(*args): # 函数的定义阶段 *聚合(打包) print( ...