Python3学习之路~5.4 os模块
用于提供系统级别的操作
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串,win下为";",Linux下为":"
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path所指向的文件或者目录的的大小,相当于os.stat(path).st_size
os.walk(path) 文件、目录遍历器,具体用法见下方
更多点击这里
代码示例:
import os
print(os.getcwd()) # 获取当前工作目录,D:\python-study\s14\Day05
os.chdir('D:\python-study\s14') #改变当前工作目录
print(os.getcwd())
print(os.curdir) #返回当前目录.
print(os.pardir) #返回当前目录的父目录..
#os.makedirs(r'D:\a\b\c\d') #生成多级目录
#os.makedirs('D:\\1\\2\\3\\4') #同上
#os.removedirs(r'D:\a\b\c\d') #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
#os.mkdir(r'D:\dir1') #生成单层空目录dir1
#os.mkdir(r'D:\dir1\dir2') #生成单层空目录dir2
#os.rmdir(r'D:\dir1\dir2') #删除单层空目录dir2
#print(os.listdir('.')) #返回当前目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
#print(os.listdir('..'))
#print(os.listdir('D:\python-study')) #os.remove(r'D:\text.txt') #删除文件
#os.rename('D:\dir1','D:\dir') #重命名文件/目录
print(os.stat(r'D:\dir')) # 获取文件/目录信息
#print(os.sep) #输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
print(os.linesep) #输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
print(os.pathsep) #输出用于分割文件路径的字符串,win下为";",Linux下为":"
print(os.name) #输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
#os.system("dir") #运行shell命令,直接显示
#os.system("ipconfig")
#rint(os.environ) #获取系统环境变量 print(os.path.abspath('Day05')) #D:\python-study\s14\Day05
print(os.path.split('D:/python-study/s14/Day05') ) #('D:/python-study/s14', 'Day05')
print(os.path.dirname('D:/python-study/s14/Day05')) #D:/python-study/s14
print(os.path.basename('D:/python-study/s14/Day05') ) #Day05
print(os.path.exists('D:/python-study/s14/Day05')) #True
print(os.path.isabs('D:/python-study/s14/Day05')) #True
print(os.path.isfile('D:/test.txt')) #True
print(os.path.isdir('D:')) #True
print(os.path.join(r'D:','a','b','c','text.txt')) # D:a\b\c\text.txt
print(os.path.getatime('D:/test.txt')) #1529997816.2916248
print(os.path.getmtime('D:/test.txt')) #1529997816.2916248
####1.解释
####os.walk(path),其中的path是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files):
####root 所指的是当前正在遍历的这个文件夹的本身的地址
####dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
####files 同样是 list ,内容是该文件夹中所有的文件(不包括子目录)
####具体参见:http://www.runoob.com/python/os-walk.html ####2.示例代码
import os
for root, dirs, files in os.walk(r'F:\test'):
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name)) ####3.输出结果
####F:\test\111.txt
####F:\test\hello
####F:\test\python
####F:\test\hello\333.txt
####F:\test\python\222.txt
os.walk()
import os print(os.path.getsize(r'F:\test\aaa.txt')) #返回文件本身的大小
print(os.stat(r'F:\test\aaa.txt').st_size) #同上 print(os.path.getsize(r'F:\test')) #返回目录本身的大小,Windows新建文件夹大小为0,Linux中每个目录占用4096bytes
print(os.stat(r'F:\test').st_size) #同上 print(os.path.getsize(r'D:\python-study')) #8192,存疑:windows目录貌似都不一样大?是如何计算的?不懂
返回文件或目录的大小
注意:以下是我踩过的坑~
import os
a = os.path.isfile('D:\python-study\s14\Day08\ftp\ftp_client\temp\test.txt')
b = os.path.isdir('D:\python-study\s14\Day08\ftp\ftp_client\temp')
print(a,b) # 输出:False False
如上代码,明明这2个文件都是存在的,为什么输出就是False呢?这个我想了很久,后来发现是由于绝对路径中存在特殊的字符:反斜杠。
大家知道,反斜杠+某些字母会构成转义字符,比如常见的、\n(换行)、\r(回车),以及上面代码中出现的\f(换页)、\t(水平制表)等。
上面代码中,Python解释器不清楚\f和\t究竟代表的是 非转义的原始字符串 还是 转义字符,所以会得出错误的结果。
所以,我们可以在有特殊字符的字符串前面加上r/R,告诉Python解释器 后面的字符串均是非转义的原始字符串,这样就不会搞错了。
import os
a = os.path.isfile(r'D:\python-study\s14\Day08\ftp\ftp_client\temp\test.txt')
b = os.path.isdir(r'D:\python-study\s14\Day08\ftp\ftp_client\temp')
print(a,b) # 输出:True True
Python3学习之路~5.4 os模块的更多相关文章
- Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件
我们一般使用linux的时候,都是在Windows上安装一个ssh客户端连接上去.那么从一台linux如何连接到另一条linux呢?使用ssh命令即可,因为每台linux机器自己都有一个ssh客户端. ...
- Python3学习之路~5.5 sys模块
用于提供对解释器相关的操作 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序 ...
- Python3学习之路~5.3 random模块
random模块常用方法: import random # 随机数 print(random.random()) # 生成一个0到1的随机浮点数,0 <= n < 1.0 print(ra ...
- Python3学习之路~5.13 re模块 正则表达式
re模块用于对python的正则表达式的操作. 常用正则表达式符号 字符数字: . 匹配除换行符以外的任意字符,即[^\n] \s 匹配任意空白符(如\t.\n.\r ) \S 匹配任意非空白符 \w ...
- Python3学习之路~5.11 configparser模块
用于生成和修改常见配置文档,当前模块的名称在 python 2.x 版本中为 ConfigParser, python 3.x 版本中变更为 configparser. 来看一个好多软件的常见文档格式 ...
- Python3学习之路~5.10 PyYAML模块
Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation
- Python3学习之路~5.8 shelve模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式 import shelve import datetime name = [& ...
- Python3学习之路~0 目录
目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...
- Python3学习之路~5.1 模块介绍
1 定义 模块:用来从逻辑上组织Python代码(变量.函数.类.逻辑:实现一个功能),本质上就是.py结尾的Python文件(文件名:test.py对应的模块名:test). 2 导入方法 impo ...
随机推荐
- [Converge] Training Neural Networks
CS231n Winter 2016: Lecture 5: Neural Networks Part 2 CS231n Winter 2016: Lecture 6: Neural Networks ...
- iOS开发-- 一个苹果证书如何多次使用
苹果的开发者账号限制开发者证书只能有5个,我们开发过程中遇到超过5个人需要真机调试的情况,如何解决这个问题呢? 有两种方式可以解决问题: 1. Revoke原来的证书----不推荐 将以前的证书“re ...
- Xlight FTP搭建FTP服务器教程
Xlight FTP搭建FTP服务器教程 1. 服务器公共设置 设置FTP 端口, ip 等 FTP 服务器公共的设定 2. 设定 FTP 用户, FTP 目录 等信息 备注: 这个用户是非Wi ...
- Flask web开发之路二
今天创建第一个flask项目,主app文件代码如下: # 从flask这个框架导入Flask这个类 from flask import Flask #初始化一个Flask对象 # Flasks() # ...
- 安装APK时引发INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误的几种可能(申明:来源于网络)
安装APK时引发INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误的几种可能(申明:来源于网络) 地址:https://my.oschina.net/freestyle ...
- vue setTimeout 注销
vue在切换页面时,销毁了上衣个组件,上一个页面的也要相应的setTimeout 注销: setTimeout(function () { if(that && !that._isDe ...
- spring boot拦截器WebMvcConfigurerAdapter,以及高版本的替换方案
Springboot中静态资源和拦截器处理(踩了坑) 背景: 在项目中我使用了自定义的Filter 这时候过滤了很多路径,当然对静态资源我是直接放过去的,但是,还是出现了静态资源没办法访问到spr ...
- babel-preset-env使用介绍
声明:文章转自https://www.cnblogs.com/ye-hcj/p/7070084.html 本文介绍一个babel转码神器babel-preset-env 简介 现如今不同的浏览器和平台 ...
- samba速度调优
本来windows上传到板子上的速度很慢 增加 socket options = TCP_NODELAY 明显上传下载速度都快了 参考: https://superuser.com/questions ...
- python fabric实现远程操作和部署示例
https://www.jb51.net/article/48434.htm 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多.修复bug什么的,测试,提交版本 ...