使用文件的作者来利用 Python 中的文件

Using the author of files to utilize the files in Python

我正在尝试考虑 运行 通过目录树并识别特定 excel 文件的最佳方式,然后继续在 pandas 中处理它们。

我试图通过扫描文件名(数据)来识别我想要的文件,但我意识到,如果我能够通过文件的作者来识别文件,它会更有效。我怎样才能重做下面的例子,从搜索 'data' 到搜索文件的作者?

我在示例中添加了 file.lower(),因为某些文件的文件名中可能包含 Data 或 DATA。如果有更好的方法来做到这一点,并且如果有一个很好的资源来学习更多关于我的 post 中描述的操作文件的信息,我将不胜感激。

import os
import shutil
for folderName, subfolders, filenames in os.walk(r'dir\Documents'):

        for file in filenames:
                file.lower()
                if 'data' in file:
                        try: shutil.copy(os.path.join(folderName, file), 'C:\dir\ALL DATA')
                        except: 
                                print(folderName, file)
from pwd import getpwuid

for file in filenames:
    author = getpwuid(os.stat(file).st_uid).pw_name
    if author == '...':
        ...

这将在目录中搜索在 excel 文件元数据中具有 creator_name 的 excel 文件:

import os
import zipfile, lxml.etree
import shutil

def find_excel_files(directory, creator_name):
    for folderName, subfolders, filenames in os.walk(directory):
        for f in filenames:
            if f.endswith('.xlsx'):
                f_path = os.path.join(folderName, f)
                f_creators = get_xlsx_creators(f_path)
                if creator_name in f_creators:
                    # One of the creators of the excel file matches creator_name
                    # Do something like copy the file somewhere...
                    print('Found a match: {}'.format(f_path))



def get_xlsx_creators(xlsx_path):
    # open excel file (xlsx files are just zipfiles)
    zf = zipfile.ZipFile(xlsx_path)
    # use lxml to parse the xml file we are interested in
    doc = lxml.etree.fromstring(zf.read('docProps/core.xml'))
    # retrieve creator
    ns={'dc': 'http://purl.org/dc/elements/1.1/'}
    creators = doc.xpath('//dc:creator', namespaces=ns)
    return [c.text for c in creators]



find_excel_files(r'C:\Users\ayb\Desktop\tt', 'Tim')

get_xlsx_creators 函数的代码取自这个 SO 答案:How to retrieve author of a office file in python?