使用文件的作者来利用 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?
我正在尝试考虑 运行 通过目录树并识别特定 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?