首页 技术 正文
技术 2022年11月12日
0 收藏 469 点赞 4,242 浏览 4358 个字

用于提供系统级别的操作

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 osprint(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
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,994
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,507
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,350
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,135
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,768
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,846