import os
os模块里面主要是一些和操作系统有关的操作,其他高深的比如一些系统的指令什么的就先不讨论了,这里列举一下我们可能会常用的文件,文件夹的操作
具体os模块的说明可以参考官方网址:
https://docs.python.org/zh-cn/3/library/os.html
- 创建,移动,复制文件,文件夹(不能删除文件夹,后面会讲到,删除文件夹要用shutil模块)
- 文件路径和名称处理
1.获取当前python程序运行路径
import os print(os.getcwd())
2.列出当前程序文件夹下的所有文件和文件夹
os.listdir()
3.列出指定某文件夹下的所有文件和文件夹
os.listdir(指定的绝对路径或相对路径)
4.os.path.isdir(要判断的文件或者文件夹路径) 是文件还是文件夹,如果是目录返回true,否则false
import os files= os.listdir() for file in files: print(file,os.path.isdir(file))
例如:
5.os.scandir() 列出目录的文件,文件夹
import os for file in os.scandir(): print(file.name,file.path)
通过这种方式可以把文件名和路径打出来.
6.os.walk(指定的绝对路径或相对路径)
以上说的那几种操作是找出来目录和文件,而不会把找到的目录里面的文件展示出来
os.walk() 会把指定路径的文件和文件夹都展示出来的,包括系统隐藏的文件
其中 dirpath是文件夹路径
dirnames 是dirpath这个文件夹下的子文件夹列表
files是dirpath这个文件夹里的文件列表
例如:
import os for dirpath,dirnames,files in os.walk('./'): print(f'发现文件夹:{dirpath}') print(files)
7.os.remove('filename') #删除一个文件 此处不多啰嗦,简单理解即可
8.os.makedirs('dirname/dirname') #可生成多层递规目录
9.os.rmdir('dirname') #删除非空目录,目录里面有文件和目录的话则删除不了的;例如:
import os # os.getcwd() # os.listdir(r'd:/TING/') os.mkdir(r'd:/ting/tt/dd') # os.rmdir(r'd:/TING/tt/dd/')
当建立了ting/tt/dd 目录后,我直接删除tt目录就会报错,而dd文件目录下面是没有东西的,直接删除dd目录是可以的
10.os.rename("oldname","newname") #重命名文件
11.os.system() #运行shell命令,注意:这里是打开一个新的shell,运行命令,当命令结束后,关闭shell
此模块在python交互模式下运行是ok的,但是在第三方编译器上面好像不太对,比如我用jupter notebook上面使用的是只出返回值0或者1,待继续研究;
12.os.path.abspath(path) #显示当前绝对路径
13.os.path.dirname(path) #返回该路径的父目录
14.os.path.basename(path) #返回该路径的最后一个目录或者文件,如果path以/或结尾,那么就会返回空值。
15.os.path.isfile(path) #如果path是一个文件,则返回True
这种比较好理解,判断指定的路径是否文件类型
16.os.path.isdir(path) #如果path是一个目录,则返回True
判断指定路径是否目录类型
17.os.path.split(path) #将path分割成路径名和文件名。(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
import os os.path.split('D:TING tdd')
out:
('D:\TING t', 'dd')
此方法感觉不太完善,不如直接用str的split方法,指定分隔符
18.os.path.join(path,name) #连接目录与文件名或目录 结果为path/name
这个方法还是挺有用的,比如做爬虫的时候经常会把爬到的内容设置到不同的目录,然后目录下面又要设置不同的文件,假设有如下情况:
通过分析某个小说网站的源代码,获取到了某篇小说有8章内容,于是我们根据爬取的网页来生成本地文件目录:
假设如下:
本地的文件目录: D:大话西游
然后通过源码分析,总共有8章,
于是我们可以这么处理,
mulu = 'D:大话西游'
zhangjie = '{}.txt'.format(num)
os.path.join(mulu,zhangjie)