Python3学习笔记24-操作文件和目录
环境变量
在操作系统中定义的环境变量,全部保存在os.environ这个变量中,可以直接查看:
- import os
- print(os.environ)
操作文件和目录
操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中,这一点要注意一下。查看、创建和删除目录可以这么调用:
- print(os.path.abspath('.'))#查看当前目录的绝对路径
- os.path.join('D:/lesson','testdir')#在某个目录下创建一个新目录,首先把新目录的完整路径表示出来:
- os.mkdir('D:/lesson/testdir')#创建一个目录
- os.rmdir('D:/lesson/testdir')#删除一个目录
想要把两个路径合成一个时,不要使用字符串拼接,而是通过os.path.join()函数,这样可以正确处理不同操作系统的路径分隔符
同样的道理,拆分路径也不要去拆字符串,而是通过os.path.split()函数,这样可以把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名
- print(os.path.split('D:/lesson/testdir/test.txt'))
- print(os.path.splitext('path/to/file.text'))#获取文件拓展名
合并、拆分路径的函数并不要求目录和文件要真实存在,它们只对字符串进行操作。
文件操作
- os.rename('D:/lesson/test.txt','D:/lesson/text.py')#对文件重命名
- os.remove('D:/lesson/text.py')#删除文件
复制文件可以从shutil模块的copyfile()函数,os模块没有提供
理论上复制可以通过读写来文成,只不过要写很多代码
利用Python特性来过滤文件
比如我们要列出当前目录下的所有目录,只需要一行代码:
- print([x for x in os.listdir('.') if os.path.isdir(x)])
要列出所有的.py文件,也只需一行代码:
- print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'])
listdir()返回指定路径下的文件和文件夹列表
- print(os.listdir('D:/'))
判断某个路径是否为目录
- print(os.path.isdir('D:/lesson'))
判断某个路径是否为文件
- print(os.path.isfile('D:/lesson'))
练习
编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
使用os.walk():遍历当前路径下目录,子目录及文件,通过root路径-dirs目录-files文件这样的形式返回
- def detect_walk(path,failename):
- for root ,dirs,files in os.walk(path):
- for a in files:
- if failename in a :
- print(root,a)
- detect_walk('D:/','test' )
使用递归函数
- def fand_file(path,failname):
- for x in os.listdir(path):
- a = os.path.join(path,x)
- if os.path.isfile(a) and failname in x:
- print(a)
- if os.path.isdir(a):
- fand_file(a,failname)
- fand_file('D:/安装程序','test')
Python3学习笔记24-操作文件和目录的更多相关文章
- Python3 IO编程之操作文件和目录
如果我们要操作文件,目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如ls,cp等命令 如果要在python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令指示简单地调用了操作系 ...
- PHP学习笔记--文件目录操作(文件上传实例)
文件操作是每个语言必须有的,不仅仅局限于PHP,这里我们就仅用PHP进行讲解 php的文件高级操作和文件上传实例我放在文章的最后部分.--以后我还会给大家写一个PHP类似于网盘操作的例子 注意:阅读此 ...
- python学习笔记八:文件与目录
一.文件的打开和创建 1.打开 open(file,mode): >>>fo = open('test.txt', 'r') >>>fo.read() 'hello ...
- Linux学习笔记之1——文件和目录管理(硬连接和软连接)(连结档,相当于快捷方式)
在这节将要学习linux的连接档,在之前用"ls -l" 查看文件属性的命令时, 其中第二个属性是连接数.那么这个连接数是干什么的?这就要理解inode. 先说一下文件是怎么存储的 ...
- Python学习笔记(二十五)操作文件和目录
摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319253241 ...
- python学习笔记 操作文件和目录
如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操 ...
- Windows phone 8 学习笔记(2) 数据文件操作
原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...
- (三)linux 学习 --操作文件和目录
The Linux Command Line 读书笔记 - 部分内容来自 http://billie66.github.io/TLCL/book/chap05.html 文章目录 通配符 字符范围 ` ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
随机推荐
- SpringCloud学习(二)---Eureka
Eureka 重点在使用,概念和源码基本不涉及 Eureka是一个基于REST(REST是HTTP协议的)的服务,主要在亚马逊网络服务(AWS)云中使用,定位服务来进行中间层服务器的均衡负载和故障转移 ...
- Java -- JDBC 学习--通过Statement进行数据库更新操作
通过 JDBC 向指定的数据表中插入一条记录. 1. Statement: 用于执行 SQL 语句的对象 1). 通过 Connection 的 createStatement() 方法来获取 2). ...
- LICS O(n*m)+前驱路径
LICS:最长公共上升子序列: 一般令f[i][j]表示a串前i位,b串以j结尾的LICS长度.于是,答案为:max(1~m)(f[n][i]); 朴素做法:O(n^3) 相等时,从1~j-1枚举最大 ...
- P3747 相逢是问候 欧拉定理+线段树
巨难!!! 去年六省联考唯一的一道黑牌题,我今天一天从早到晚,把它从暴力15分怼到了90分,极端接近正解了. bzoj上A了,但是洛谷和loj上面就不行.伪正解会T,奇奇怪怪的类正解会WA.. 那么, ...
- A1023. Have Fun with Numbers
Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, wit ...
- re正则模块(二十五)
一:什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 r ...
- 理解for循环
先给大家出一个小题目,看看最终我们的i的值是多少? for(var i=0;i<10;i+=2){ if(i<=5){ i++; continue; }else{ i--; break; ...
- Linux查看端口、进程信息
1.linux上如何查看端口 通常情况下,某个端口号会被莫名其妙的占用了.却不知道什么东东占用了,影响心情.通过如下命令,即可查看某一个端口号是否被占用 1)lsof -i:端口号,即可查看某一端口的 ...
- switch查询成绩、公司年销售额求和、根据工龄求工资
/* 1 编写代码实现如下内容:if语句实现考试成绩分等级(使用switch语句). [90-100] A等. [80-90) B等. [70-80) C等. [60-70) D等. [0-60) E ...
- 函数和常用模块【day04】:高阶函数(七)
本节内容 1.介绍 2.具体实用 3.eval()函数 一.介绍 高阶函数:变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数. 二.具体实用 其实说白了,高阶函数功能就 ...