物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

PythonでZIPファイルを作成する

arXivに投稿する時、関連するファイルをZIPファイルで書庫化しておくと楽である。動的にZIPファイルを作るにはPythonが手っ取り早いので、コードを作ってみた。

import sys

tex_filename = sys.argv[1]+".tex"
zip_filename = sys.argv[1]+".zip"

# bibを使うときはbblも必要
import zipfile
import re

# 必要なファイルリスト (例: PTEPのフォーマット)
files = [tex_filename, sys.argv[1]+".bib", sys.argv[1]+".bbl",
         "ptephy_v1.cls", "authblk-TI.sty", "preprint_v1.clo"]

lines = open(tex_filename, encoding="utf-8").readlines()
for line in lines:
    # 図はすべてfigs2ディレクトリにPDFファイルとPNGファイルで存在するので正規表現で探索する
    match = re.search(r"figs2/.+\.((pdf)|(png))", line)
    if match is not None:
        # ファイルリストに追加
        files.append(match.group(0))

# ZIPファイルを定義
zip = zipfile.ZipFile(zip_filename, "w", zipfile.ZIP_DEFLATED)

# ZIPファイルに追記
for file in files:
    zip.write(file, file)

# ZIPファイルを閉じる
zip.close()