os模块
import os
s = os.path.dirname(__file__) --- 获取当前文件的路径
path = os.path.join(s, 'static\uploads',secure_filename(f.filename)) #注意:没有的文件夹一定要先创建,不然会提示没有该路径
os.walk()
os.walk() 函数有四个入参,分别是:top, topdown=True, onerror=None, followlinks=False
(1)top参数为walk递归的顶层路径,可取绝对路径或者相对路径。
(2)理解topdown一:参数topdown的默认值是"True"表示首先返回顶级目录下的文件,然后再遍历子目录中的文件当topdown的值为"False"时,表示先遍历子目录中的文件,然后再返回
顶级目录下的文件。
理解topdown二:topdown参数默认为True,这是一个很有意思的参数,他的存在应该就是为了运行效率。具体来说就是:topdown=True 可更改dirnames列表(删除或者分割列表),walk方法仅
会递归进入仍在dirnames列表中的目录; topdown=False 则无论对dirnames列表如何处理,递归子目录会重新生成,不会改变。
如何理解呢?
比如近期我的硬盘D盘空间满了,要找出最大的前十个文件。D盘有两个SVN目录,由于SVN文件目录很深,文件很多,即使找出有很大的文件,也不能删除,那么我需要的就是过滤这个目录。如何做到呢?
先设定无需进入的目录列表,然后做一个判断,若无需walk则remove该目录即可。代码如下:
# 无需walk进入的目录
exclusive_dir = ["iSeeRobotAdvisor","","VM INSTALL","VIPSTU"]
for dirpath, dirnames, filenames in os.walk(top=path,topdown=True):
for each in exclusive_dir:
if each in dirnames:
dirnames.remove(each) # 移除特定目录
(3)oneerror默认为None。这个是当walk有异常报错时,可用该参数定义一个函数。输出错误,但不中断walk函数;也可抛出异常,中断walk函数。
followlinks
followlinks 默认为False。当目录中出现链接时,需要用该参数定义。
若followlinks=False ,则不会递归进入链接目录;
若followlinks=True ,则会递归进入链接目录;
1. os.path.driname(path):返回路径的上一级路径字符串。 >>> os.path.dirname('D:\Games') 'D:\\' 2. os.path.basename(path):返回路径的最后一级目录名(文件夹名)或文件名(全称)。 >>> os.path.basename('D:\Games\9yin_632\蜗牛整包\\0x0804.ini') '0x0804.ini' 》》》 3. os.path.splitext(file_name):返回文件名和其后缀组成的元组。 >>> os.path.splitext('0x0804.ini') ('0x0804', '.ini') >>> 4. os.path.abspath(string):返回当前工作目录的路径加上string组成的路径字符串。 >>> os.path.abspath('Games') # 当前目录下并没有“Games”这个文件或文件夹,只是随意写的字符串 'C:\\Python27\\Games 5. os.path.isdir(path):判断一个路径是否是一个目录(文件夹)。 6. os.path.isfile(path):判断一个路径是否是一个文件。 7. os.listdir(dir_path):以列表的形式返回一个目录(dir_path只能是目录,不能是文件名路径)下的所有文件(全称)和文件夹名称。 8. os.remove(file_path):删除指定文件。 9. os.removedirs(dir_path):删除指定空目录(空文件夹)。 10. os.path.exists(path):判断一个路径是否存在。 11. os.mkdir(path):新建一个目录(文件夹)。 12. os.getcwd():获取当前工作目录。