作业一:输出 9*9 乘法口诀表(注意格式)
注意:提交作业时要有代码执行输出结果。
def table():
#在这里写下您的乘法口诀表代码吧!
if __name__ == '__main__':
table()
思路:循环嵌套+格式化输出
tip:如果想使用print() 时不输出换行,添加参数end=''
参考代码:
def table():
#在这里写下您的乘法口诀表代码吧!
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d=%d '%(j,i,i*j),end='')
print('\n')
if __name__ == '__main__':
table()
输出:
作业二:查找特定名称文件
遍历”Day1-homework”目录下文件;
找到文件名包含“2020”的文件;
将文件名保存到数组result中;
按照序号、文件名分行打印输出。
注意:提交作业时要有代码执行输出结果。
#导入OS模块
import os
#待搜索的目录路径
path = "Day1-homework"
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []
def findfiles():
#在这里写下您的查找文件代码吧!
if __name__ == '__main__':
findfiles()
思路:递归得到文件下全部文件及子文件名称,使用find()查找字符串中是否含有相关字符,如果有则添加进result数组,最后打印出序号和文件名。
tip:os.listdir()、os.walk()获取全部文件名,find()查找字符串中的子字符串,如果有返回index,没有返回-1。os.path.join()用文件分隔符拼接字符串,jion()自定义分隔符。
1、查找文件名:
1、os.listdir() 方法用于返回指定的目录下包含的文件或子目录的名字的列表。这个列表以字母顺序。其得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归。 它也不包括 '.' 和 '..' 即使它在目录中。
example:
def findfiles():
p = os.listdir(path)
print(p)
输出:
['26', '4', '1', '18']
只能获取一级子文件夹的名字,其中更深层的子文件名没有得到。
使用递归方法,获取全部文件及子文件名。
参考代码1:
#导入OS模块
import os
#待搜索的目录路径
path = "Day1-homework"
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []
def findfiles(path):
if path:
try:
paths = os.listdir(path)
except NotADirectoryError as e:
pass
except UnboundLocalError as e:
pass
try:
for p in paths:
findfiles(os.path.join(path,p))
#print(os.path.join(path,p))
result.append(os.path.join(path,p))
except UnboundLocalError as e:
pass
if __name__ == '__main__':
findfiles(path)
#print(result)
i=0
for r in result:
if r.find(filename)!=-1:
print(i,r)
i+=1
输出:
2、os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。
语法格式为:os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
方法参数说明:top:要遍历的目录的路径
topdown:可选,如果为 True,则优先遍历 top 目录,以及 top 目录下的每一个子目录,否则优先遍历 top 的子目录,默认为 True
onerror: 可选, 需要一个 callable 对象,当 walk 异常时调用
followlinks:可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录,默认为 False。
返回值: 三元组 (root, dirs, files)
root :所指的是当前正在遍历的目录的地址
dirs :当前文件夹中所有目录名字的 list (不包括子目录)
files :当前文件夹中所有的文件 (不包括子目录中的文件)
参考代码2:
#导入OS模块
import os
#待搜索的目录路径
path = "Day1-homework"
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []
def findfiles():
#在这里写下您的查找文件代码吧!
lists=[]
i=0
for root,dirs,files in os.walk(path):
#root所指的是当前正在遍历的目录的地址
#dirs当前文件夹中所有目录名字的 list (不包括子目录)
#files当前文件夹中所有的文件 (不包括子目录中的文件)
for f in files:
#获得全部文件下的子文件路径
if f.find(filename)!=-1:
p = os.path.join(root,f)
result.append(p)
#输出序号及其文件名
for r in result:
print('%d:%s'%(i,r))
i+=1
if __name__ == '__main__':
findfiles()
输出: