私は友人のためにPythonスクリプトを書きました:
- 彼女がカタログ化している写真の CSV を取得します。これには、順序付けられたリストに写真の名前が含まれています
- ファイルシステムで画像ファイルを見つけます
- csv 内のファイルとシステム上のファイルを照合します
- ファイルシステム上の画像を、ファイルが CSV に表示される順序で Figure 名のフォルダーにコピーします
したがって、基本的には次のようになります。
入力: 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 アイテムに到達したように見えます。