os 模块常用操作
os.name #操作系统类型
os.uname() #系统信息
os.environ #环境变量
os.path.abspath() #查看当前目录的绝对路径
os.path.join(path1, path2) #合并路径
os.path.split(path) #拆分路径
os.path.splitext() #拆分路径,得扩展名
os.mkdir(path) #创建目录
os.rmdir(path) #删掉目录
os.rename(old,new) #重命名
os.remove() #删除文件
import shutil copyfile() #复制文件
os.path.isdir() #bool是否为文件夹
os.path.isfile() #bool是否为文件
编写一个程序,
能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径。
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import os
def findDir(d):# 返回当前目录下所有目录,传递列表,返回列表
for m in d:
os.chdir(m)
dir_list = [x for x in os.listdir('.') if os.path.isdir(x)]
for n in dir_list:
d.append(os.path.join(m,n))
return d
def findFile(s,d):# 返回所有目录下的文件名包含字符串s的文件
L = []
for n in d:
os.chdir(n)
files = [x for x in os.listdir('.') if os.path.isfile(x)]
for f in files:
if s in f:
L.append(os.path.join(n,f))
for i in L:
print(i)
def find_s_file(s,d):
findDir(d)
findFile(s,d)
d = [os.path.abspath('.')]
s = input('Enter one string: ')
find_s_file(s,d)
使用递归求解:
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import os
def find_s_file(d, s):
os.chdir(d)
for m in os.listdir('.'):
n = os.path.join(d, m)
if os.path.isfile(n) and s in m:
print(n)
if os.path.isdir(n):
find_s_file(n, s)
s = input('Enter one string: ')
d = os.path.abspath('.')
find_s_file(d, s)
知识点:如果 s 是一个字符串,判断 s 中是否包含另一个字符串 a,使用 in 判断即可。
>>> 'def' in 'abcdef...xyz'
True
>>> 'f..' in 'abcdef...xyz'
True
>>> 'fed' in 'abcdef...xyz'
False