1 | import os |
1 os创建目录
os.mkdir(path)
这种情况下,上级目录必须存在,最后一个目录不存在则会自动创建。
1 | path = "mkdir" |
os.makedirs(path)
这种情况下,只要目录路径下有不存在的目录,就会创建该目录,然后递归的创建文件目录。
1 | path = "blankfolder" |
os批量创建n个指定目录
文件名称中只带一个数字
1 | path = "blankfolder/folder_" |
文件名称中带多个数字
1 | path = "PreData/Bearing" |
文件有多个上级目录
1 | Path_List = ['35Hz12kN','37.5Hz11kN','40Hz10kN'] |
2 os.listdir(path)
返回一个列表,其中包含由path
给出的目录中条目的名称。该列表按任意顺序排列,并且不包含特殊条目’.’ 和’..’,即使它们存在于目录中。
1 | path = "blankfolder" |
3 目录下文件的排序—list排序
sort(*,key=None,reverse=False)
key 指定一个带有参数的函数,用于从每个列表元素中提取比较键,默认值None
表示直接对列表项排序不计算一个单独的键值; reverse 若为True
,则反向排序
key 函数可通过lamdba
表达式来创建, list 会根据表达式的expression
进行排序
按照文件中数字大小进行排序
str.split(sep=None,maxsplit=-1)
返回字符串内单词组成的列表,使用 sep 作为分割字符串,若 sep 为None
则按照空格进行拆分。若给出 maxsplit ,则最多进行 maxsplit 次拆分
1 | dirs.sort(key=lambda x:int(x.split('_')[1])) |
按文件名称字符串小写排序
1 | dirs.sort(key=lambda x:x.lower()) |
按创建时间精确到秒排序
os.path.getatime(path)
:返回path
的最后访问时间os.path.getmtime(path)
:返回path
的最后修改时间os.path.getctime(path)
:返回path
在系统中的ctime,Windows中,为path
的创建时间
1 | dirs.sort(key=lambda x:os.path.getatime(os.path.join(path,x))) |
1 | dirs.sort(key=lambda x:os.path.getmtime(os.path.join(path,x))) |
1 | dirs.sort(key=lambda x:os.path.getctime(os.path.join(path,x))) |
按创建时间精确到纳秒排序
使用os.stat(path)
的返回值statinfo
的三个属性获取文件的创建时间等信息
st_atime_ns
:返回statinfo
的最后访问时间(纳秒)st_mtime_ns
:返回statinfo
的最后修改时间(纳秒)st_ctime_ns
:返回statinfo
在系统中的ctime,Windows中,为path
的创建时间(纳秒)
1 | dirs.sort(key=lambda x:os.stat(os.path.join(path,x)).st_ctime_ns) |
**注:**在使用os.path.getctime(path)
,os.path.getmtime(path)
,os.path.getatime(path)
或os.stat(path)
时所用路径必须为相对路径全称,故需要用os.path.join(path,*paths)
来拼接路径
按文件名称中某几位特定的键值进行排序
1 | i = 4 |
'for folder in dirs:\n print(folder[:-i])\n print(type(folder[:-i]))\n print(folder)'
引入re
按照文件名称排序
re.compile(pattern,flags=0)
将正则表达式的样式编译为一个正则表达式对象(正则对象),可以用于匹配
序列1
2prog = re.compile(pattern)
result = prog.match(string)等价于
1
result = re.match(pattern, string)
如果需要多次使用这个正则表达式 pattern 话,使用
re.compile()
和保存这个这个正则对象以便复用,可以让程序更加高效re.split(pattern,string,maxsplit=0,flags=0)
用 pattern 分开 string 。 如果在 pattern 中捕获到括号,那么所有的组里的文字也会包含在列表里。如果 maxsplit 非零, 最多进行 maxsplit 次分隔, 剩下的字符全部返回到列表的最后一个元素。
pattern = r'(\d+)
+
- 对它前面的正则式匹配1到任意次重复。
ab+
会匹配'a'
后面跟随1个以上到任意个'b'
,它不会匹配'a'
。
- 对它前面的正则式匹配1到任意次重复。
\d
- 对于 Unicode (str) 样式:匹配任何Unicode十进制数(就是在Unicode字符目录
[Nd]
里的字符)。这包括了[0-9]
,和很多其他的数字字符。如果设置了ASCII标志,就只匹配[0-9]
。 - 对于8位(bytes)样式:
匹配任何十进制数,就是[0-9]
。
- 对于 Unicode (str) 样式:匹配任何Unicode十进制数(就是在Unicode字符目录
s[i:j:k]
s从i到j步长为k的切片
map(function, iterable,...)
对每个iterable进行function运算,可以使用lambda匿名函数
1 | import re |
1 | path = "PreData" |