我是靠谱客的博主 落寞寒风,最近开发中收集的这篇文章主要介绍Zhong__Python2 Artifactory API,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

时间:2020.11.25

环境:Python3.7

目的:简单使用ArtifactoryPath库

说明:

作者:Zhong QQ交流群:121160124 欢迎加入!

 

# -*- coding:utf-8 -*-
import json
import requests
import pathlib

from artifactory import ArtifactoryPath


class PhraseArt(object):
    """
    获取文件列表
    获取文件的详细信息(如: md5,文件名)
    保存文件信息到file_info.txt(JSON字符串格式)
    """

    def __init__(self, username, password, repo):
        self.username = username
        self.password = password
        self.repo = repo
        self.data = ""
        self.aas_info_ls = []  # # 定义[] 存储artifactory 文件信息

        # 获取当前文件的目录路径current_path 在下载文件时使用
        self.current_path = pathlib.Path().resolve()
        # 定义url类型 此url提供详细的信息
        self.url_ass = "http://127.0.0.1:8081/artifactory/api/storage/"
        # 定义url类型 此url提供下载文件功能
        self.url_a = "http://127.0.0.1:8081/artifactory/"

        # 认证
        self.a_path = ArtifactoryPath("%s%s" % (self.url_a, self.repo), auth=(self.username, self.password))  # 用于下载文件时使用
        self.ass_path = ArtifactoryPath("%s%s" % (self.url_ass, self.repo), auth=(self.username, self.password))  # 用于获取文件信息存储txt时使用

        # 定义url集合 存储artifactory url 存储阶段未用到
        self.url_set = set()


    # 传入url 获取详细信息
    def getInfo(self, url):
        """获取所有文件的详细信息"""
        print "URI: n", url

        r = requests.get(url, auth=(self.username, self.password))
        if r.status_code == 200:
            self.data = json.loads(r.content)
            # 获取children
            children = self.data.get("children", None)
            if children:
                # 遍历children 获取详细信息
                for ci in children:
                    # 如果不是folder 那么获取它的详细信息
                    if not ci.get("folder", None):
                        # 请求文件的url 获取详细的信息
                        file_res = requests.get("%s%s" % (url, ci.get("uri")), auth=(self.username, self.password))
                        if file_res.status_code == 200:
                            file_json = json.loads(file_res.content)
                            # 将数据转换为str 便于存储在txt
                            file_json = str(file_json)
                            self.aas_info_ls.append(file_json)
                    # 如果是folder 递归处理
                    else:
                        # 递归处理是目录的url
                        self.getInfo(self.data.get("uri", None) + ci.get("uri"))

    # 写入txt文档
    def writeTxt(self):
        # 取出文本中所有内容 放入集合
        lines_set = set()
        try:
            with open("file_info.txt", 'r') as f_read:
                for line in f_read.readlines():
                    lines_set.add(line.strip())
        except Exception as e:
            print "file_info不存在!将创建文件!"
        print "lines_set:"
        print lines_set
        # 循环aas_info_ls列表中的数据对比是否在lines_set里面 有则忽略 没有则写入
        with open("file_info.txt", "a") as f_write:
            for ail in self.aas_info_ls:
                if ail not in lines_set:
                    print "数据不存在!执行将数据写入txt!"
                    f_write.write(ail + "n")
                else:
                    print "数据已存在!"

        return True

    # 程序执行主函数
    def gather(self):
        self.getInfo(self.ass_path)
        print "所有的仓库文件信息: n"
        print self.aas_info_ls
        write_res = self.writeTxt()
        print write_res
        exit(0)

# 实例化对象  传入用户认证信息和仓库名
phrase_obj = PhraseArt("admin", "Zhong", "test")
# 调用主函数
phrase_obj.gather()

关注微信公众号

 

最后

以上就是落寞寒风为你收集整理的Zhong__Python2 Artifactory API的全部内容,希望文章能够帮你解决Zhong__Python2 Artifactory API所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部