1.通过传入的路径,获取该路径下面的所有目录和文件(递归)
方法一:使用os.listdir
代码如下:
#!/usr/bin/env python3
#coding:utf8
import os,sys
def lsdir(folder):
contents = os.listdir(folder)
print("%s\n%s\n" % (folder, contents))
for path in contents:
full_path = os.path.join(folder, path)
if os.path.isdir(full_path):
lsdir(full_path)
if __name__ == "__main__":
lsdir(sys.argv[1])
listdir(sys.argv[1]) -- 获取命令行传入的参数
•运行代码,效果如下 [命令行传参]
[root@localhost python]# python3 listdir.py /a
/a
['qin', 'qin.txt']
/a/qin
['fu', 'zhao.txt']
/a/qin/fu
['xing.txt']
方法二:使用os.walk
代码如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os,sys
def lsdir(folder):
contents = os.walk(folder)
for path, folder, file in contents:
print("%s\n%s\n%s" %(path, folder, file))
if __name__ == "__main__":
lsdir(sys.argv[1])
os.walk()方法返回的参数说明:
第一个参数是目录路径,第二个是目录下的目录,第三个参数是目录下的文件
•运行代码,测试效果
下面的[]说明目录下没有文件夹
[root@localhost python]# python listdir1.py /home/tarena/suzhoutai/templates
/home/tarena/suzhoutai/templates/
['qin']
['task_list.html', 'login.html']
/home/tarena/suzhoutai/templates/qin
['fu']
['jian.txt']
/home/tarena/suzhoutai/templates/qin/fu
[]
['zhao.txt']
2.如何计算文件的md5值(每次读取4K,直到读取完文件所有内容,返回一个16进制的md5值)
代码如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import hashlib
import sys
def md5(filename):
m = hashlib.md5()
with open(filename) as fobj:
while True:
data = fobj.read(4096)
if not data:
break
m.update(data)
return m.hexdigest()
if __name__ == "__main__":
print(md5(sys.argv[1]))
•运行代码,测试效果
[root@localhost python]# python md5.py qin.txt
c33da92372e700f98b006dfa5325cf0d
[root@localhost python]# md5sum qin.txt
c33da92372e700f98b006dfa5325cf0d qin.txt
*注意:使用linux自带的md5sum和自己编写的Python3计算的md5值相通
本人亲测有效,希望对大家有帮助