监视云端点(存储帐户)与服务器端点中文件的状态

时间:2019-02-06 16:44:50

标签: python-3.x azure azure-storage

我已经使用面向Python和Go的文档编写了一些脚本,该脚本可以上传/下载文件等,现在我正在考虑在计算机和Azure存储帐户之间管理文件。

我现在正在考虑创建/使用类似于“ git status”的东西,您可以使用它来查看本地git存储库和远程git存储库之间的差异。我最初的想法是使用某种队列系统,但是我似乎找不到使用Azure Storage SDK为文件执行此操作的文档。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

有几种方法可以检查您当前正在寻找的内容,一个简单的python脚本可以为您提供此功能,我刚刚编写并测试了一种方法,用于比较Azure File Share与服务器上的本地文件夹中存在的文件和文件夹,然后打印尚未在Azure文件共享中显示的内容:

import os
import azure.storage.common
from azure.storage.common import CloudStorageAccount
from azure.storage.file import FileService
file_service = FileService(account_name='storage_acct_name', account_key='keyhere')


local_files = os.listdir(r'C:\Users\someuser\Desktop\test')
print("Local Files: ")
print(local_files)

print('Azure Files in the Cloud:')
files_incloud= list()

generator = file_service.list_directories_and_files('filesharename')
for file_or_dir in generator:
        files_incloud.append(file_or_dir.name)
        print(file_or_dir.name)

def Diff(local_files,files_incloud):
    return(list(set(local_files) - set(files_incloud)))

print("Files NOT in the Cloud FILESHARE are: ")
print(Diff(local_files,files_incloud))

在我的测试场景中,我在本地有两个文件:text1.txt和text2.txt和  在我拥有的Azure云共享中:仅text2.txt,结果如下:

    Local Files:
    ['text1.txt', 'text2.txt']
    Azure Files in the Cloud:
    xxxxxx.pptx
    xxxx.pdf
    text2.txt
    Files NOT in the Cloud FILESHARE are:
    ['text1.txt']

用于字符串匹配的新功能:

result = (Diff(local_files,files_incloud))
print (result)
print("\n")
print("Matching Strings:")
print("\n")
for item in result:
        if "text" in item:
                print item

结果:

Matching Strings:


text1.txt

我也在此仓库上分享了它:https://github.com/adamsmith0016/Azure-storage