我为一个朋友写了一个python脚本:
- 拍摄她一直在编目的照片的 CSV,其中照片的名称在有序列表中
- 查找文件系统上的图像文件
- 将 csv 中的文件与系统上的文件匹配
- 按照文件在 CSV 中出现的顺序,将文件系统上的图像复制到具有图形名称的文件夹中
所以本质上,它确实:
输入:myphoto1.tiff、mypainting.jpeg、myphoto9.jpg、orderedlist.csv
输出:fig001.jpg、fig002.tiff、fig003.jpeg
此代码将在 Mac 上运行。这很好用,除非我们遇到了一些文件(全部由同一位摄影师)在其中包含 1 个括号的问题,例如
myphoto[fromitaly.jpg
这似乎打破了我的正则表达式搜索:
相关代码:
orderedpaths = [path for item in target for path in filenames if re.search(item, path)]
其中 filenames 是系统上的照片文件列表,而 target 是 CSV 中的列表。此代码应该将 CSV 文件名(以及列表中的后续顺序)与文件名匹配,以提供系统上文件名的有序列表。
错误:
Traceback (most recent call last):
File "renameimages.py", line 43, in <module>
orderedpaths = [path for item in target for path in filenames if re.search(item, path)]
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 142, in search
return _compile(pattern, flags).search(string)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 244, in _compile
raise error, v # invalid expression
sre_constants.error: unexpected end of regular expression
我尝试或考虑过:
- 更改文件名/csv,但这不可扩展,理想情况下,她的部门将来会更多地使用此脚本
- 调查将文件视为“原始” - 但从 CSV 输入似乎不可能
- 从输入中删除 [ 字符,但问题是输入与系统上的实际文件不匹配。
我想我应该提到我只是怀疑这是问题所在:通过打印代码的进度,看起来好像代码到达带有括号和错误的 CSV 项目。