环境变量

在操作系统中定义的环境变量,全部保存在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-操作文件和目录的更多相关文章

  1. Python3 IO编程之操作文件和目录

    如果我们要操作文件,目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如ls,cp等命令 如果要在python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令指示简单地调用了操作系 ...

  2. PHP学习笔记--文件目录操作(文件上传实例)

    文件操作是每个语言必须有的,不仅仅局限于PHP,这里我们就仅用PHP进行讲解 php的文件高级操作和文件上传实例我放在文章的最后部分.--以后我还会给大家写一个PHP类似于网盘操作的例子 注意:阅读此 ...

  3. python学习笔记八:文件与目录

    一.文件的打开和创建 1.打开 open(file,mode): >>>fo = open('test.txt', 'r') >>>fo.read() 'hello ...

  4. Linux学习笔记之1——文件和目录管理(硬连接和软连接)(连结档,相当于快捷方式)

    在这节将要学习linux的连接档,在之前用"ls -l" 查看文件属性的命令时, 其中第二个属性是连接数.那么这个连接数是干什么的?这就要理解inode. 先说一下文件是怎么存储的 ...

  5. Python学习笔记(二十五)操作文件和目录

    摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319253241 ...

  6. python学习笔记 操作文件和目录

    如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操 ...

  7. Windows phone 8 学习笔记(2) 数据文件操作

    原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...

  8. (三)linux 学习 --操作文件和目录

    The Linux Command Line 读书笔记 - 部分内容来自 http://billie66.github.io/TLCL/book/chap05.html 文章目录 通配符 字符范围 ` ...

  9. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

随机推荐

  1. java 反射 子类泛型的class

    很早之前写过利用泛型和反射机制抽象DAO ,对其中获取子类泛型的class一直不是很理解.关键的地方是HibernateBaseDao的构造方法中的 Type genType = getClass() ...

  2. 【POJ1952】逢低吸纳 dp+计数

    题目大意:给定一个有 N 个数的序列,求其最长下降子序列的长度,并求出有多少种不同的最长下降子序列.(子序列各项数值相同视为同一种) update at 2019.4.3 题解:求最长下降子序列本身并 ...

  3. JWT简介

    JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法. 一.跨域认证的问题 互联网服务离不开用户认证.一般流程是下面这样. 1.用户向服务器发送用户名和密 ...

  4. Linux shell 自启动脚本写法

    直接上脚本内容 #!/bin/bash #chkconfig: 2345 80 90 #description:sniffer #第一行,告诉系统使用的shell,所以的shell脚本都是这样. #第 ...

  5. Linux 文件管理权限

    这里呢我们需要掌握的是两个命令 chmod 和 chgrp和chown 视频地址:http://www.tudou.com/listplay/pA16IH7T_Sc/LuyHbR_7Yp0.html ...

  6. python---wsgiref初探

    wsgiref使用 from wsgiref.simple_server import make_server from urls import URLS def RunServer(environ, ...

  7. java8的新特性详解-----------Lamda表达式

    java8最大的亮点就是引入了Lamda表达式  , 函数式编程的概念  具体啥意思我也不知道.只管用就行了,非常的强大,简洁,一个表达式相当于以前的十几行代码  因为之前要实现这种效果全靠if el ...

  8. C#获取Html中的图片元素路径

    使用Ueditor的时候把文章以HTML标签的方式存在数据库中,同时还要将文章的第一张图片的路径一并存入数据库,所以就需要在Html中获取第一个图片的路径,没有图片的话设置一个默认的图片.代码如下: ...

  9. 通过lua栈了解lua与c的交互

    lua是如何执行的 其中分析.执行部分都是c语言实现的. lua与c的关系 lua的虚拟机是用c语言实现的,换句话说一段lua指令最终在执行时都是当作c语言来执行的,lua的global表,函数调用栈 ...

  10. 使用paramiko远程执行命令、下发文件

    写部署脚本时,难免涉及到一些远程执行命令或者传输文件. 之前一直使用sh库,调用sh.ssh远程执行一些命令,sh.scp传输文件,但是实际使用中还是比较麻烦的,光是模拟用户登陆这一点,还需要单独定义 ...