这是一个相当广泛的问题,在这里不太合适(这更像是一个教程,而不是一个快速的代码问题),但这里有一些策略建议:
- Excel 将打开 .csv 并将逗号/换行符视为单元格。所以
- 您需要迭代(也许是递归地)目录
- 扩展路径名——如果你使用像Python这样的高级语言,这是通过标准函数实现的;然后使用正则表达式来解析最后一位
- 将每个路径的格式化内容存储为列表中的行
- 将该列表打印到文本文件,用逗号连接每个元素,并用换行符连接每行
- 为所述文件提供 .csv 后缀并在 Excel 中打开它
请注意,如果您确实想要一个合适的数据库,Python 也是一个不错的选择——SQLite 是标准安装的一部分。
干杯,祝你好运
更新:哈哈,你在我回答的时候编辑了问题。似乎您需要的所有内容都在文件名中,但如果您计划使用元数据,请注意。如果文件并非全部来自同一来源,则从文件中提取元数据可能会变得更加棘手;并非每种媒体类型都具有相同的元数据结构,并非创建文件的每个应用程序都提供相同的元数据结构。因此获取元数据的逻辑可能会变得混乱。
您是否有理由不能使用现有程序来执行此操作?
最后你提到将它放在你的网络服务器上;再次遵循 Python,向您的服务器发出所需请求的能力也内置于标准包中。
最终更新
无法帮助您处理 bash;我对此一无所知,我也不是 Python 专家,但你的目标非常简单。我还没有测试过这个——可能有一两个错别字,考虑它是大部分适合 python 的伪代码。
# import the standard libraries you'll need
import os # https://docs.python.org/2/library/os.html
import re # https://docs.python.org/2/library/re.html
# this function will walk your directories and output a list of file paths
def getFilePaths(directory):
file_paths = []
for root, directories, files in os.walk(directory):
for filename in files:
filepath = os.path.join(root, filename)
file_paths.append(filepath)
return file_paths
video_file_paths = getFilePaths("path/to/video/library")
output_to_csv = [];
for video_file in video_file_paths:
base_path, fname = os.path.split(video_file)
""" This is a super simple bit of regex that, provided your files are all formatted as
written, will parse out title, subtitle, year and file extension. If your file names
turn out to have more exceptions than you expect (I'd be shocked if not), you may need
to make this part more robust, either with much more savvy regex, or else some conditional
logic—maybe a recursive try... catch loop"""
reg_ex = re.compile("/^(.*) - (.*) \((.*)\)\.(.*)$/");
# now apply the compiled regex to each path
name_components = reg_ex.match(fname);
"""Each output is a row of your CSV file; .join() will join the 4 elements of the regex
match (assuming, again, that your filenames are as clean as you claim), and then add
the basepath, so you should be building, in this loop, a list with elements like:
title, subtitle, year, file_extension, full path"""
output_to_csv.append("{0},{1}".format(name_components.join(","), base_path));
#create the file, making sure the location is writeable
csv_doc = open("my_video_database.csv", "w");
# now join all the rows with line breaks and write the compiled text to the file
csv_doc.write( ouput_to_csv.join("\n") );
#close your new database
csv_doc.close()