概述
时间: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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复