获取当前目录下的所有文件路径
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2018-04-15 09:00:00
# @Author : Canon
# @Link : https://www.python.org
# @Version : 3.6.1
import re
import os
import json
def read_dir(path, res, clear_pre=""):
paths = os.listdir(path)
for i, item in enumerate(paths):
sub_path = os.path.join(path, item)
if os.path.isdir(sub_path):
res[item] = {}
read_dir(sub_path, res[item], clear_pre)
else:
# res[item] = sub_path
res[item] = re.sub(clear_pre, "", sub_path)
result = {}
read_dir("..", result, "\\.\\.\\\\")
json_res = json.dumps(result, indent=2)
print(json_res)
获取 .tar.gz 压缩文件的所有文件路径
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2018-04-15 09:00:00
# @Author : Canon
# @Link : https://www.python.org
# @Version : 3.6.1
import re
import json
import tarfile
# 读取压缩文件
tar = tarfile.open("PaymentGateway_20180301.tar.gz", 'r:gz', encoding="utf-8")
# 获取压缩文件中的所有文件路径
for tar_info in tar.getmembers():
print(tar_info.name)
def get_sub_dir(sub_list=None, sub_dir=""):
# 获取路径下的所有文件和文件夹名称
if sub_list is None:
sub_list = []
val_list = []
if sub_dir:
for path_val in sub_list:
condi_val = sub_dir + "/"
dir_num = len(sub_dir.split("/"))
if condi_val in path_val:
val = sub_dir + "/" + path_val.split("/")[dir_num]
if val not in val_list:
val_list.append(val)
return val_list
else:
return None
def get_proj_struct(path_list, path_dir, result):
# 获取路径下的所有文件和文件夹名称
path_file = get_sub_dir(path_list, path_dir)
str_list = str(path_list)
# 递归获取生成项目结构的字典
for item in path_file:
item_file = item.split("/")[-1]
if item + "/" in str_list:
result[item_file] = {}
get_proj_struct(path_list, item, result[item_file])
else:
result[item_file] = item
# print(get_sub_dir(tar.getnames(), "PaymentGateway"))
res_dir = {}
get_proj_struct(tar.getnames(), "PaymentGateway", res_dir)
res_dir = json.dumps(res_dir, indent=2)
# print(res_dir)
网友评论