Python-Skript zum Zusammenführen mehrerer vCard- (.vcf-)Dateien in eine.

merge_vcf.py
#!/usr/bin/env python3
import os
import sys

# Prüfen, ob das Verzeichnis als Befehlszeilenargument angegeben wird
if len(sys.argv) != 2:
    print("Usage: python merge_vcf.py <directory>")
    sys.exit(1)

# Verzeichnis aus dem Befehlszeilenargument abrufen
directory = sys.argv[1]

# Prüfen, ob das angegebene Argument ein gültiges Verzeichnis ist
if not os.path.isdir(directory):
    print(f"{directory} is not a valid directory.")
    sys.exit(1)

# Ausgabedateinamen auf den Verzeichnisnamen plus ".vcf" setzen
output_file = os.path.basename(os.path.normpath(directory)) + '.vcf'
output_file_path = output_file

# Prüfen, ob die Ausgabedatei bereits existiert
if os.path.exists(output_file_path):
    print(f"{output_file_path} already exists. Exiting...")
else:
    # Liste aller .vcf-Dateien im angegebenen Verzeichnis abrufen
    vcf_files = [file for file in os.listdir(directory) if file.endswith('.vcf') and file != output_file]

    # Ausgabedatei im Schreibmodus öffnen
    with open(output_file_path, 'w', encoding="utf-8") as outfile:
        # Jede vcf-Datei durchlaufen und ihren Inhalt an die Ausgabedatei anhängen
        for vcf in vcf_files:
            with open(os.path.join(directory, vcf), 'r', encoding="utf-8") as infile:
                try:
                    outfile.write(infile.read())
                    # Sicherstellen, dass eine neue Zeile zwischen verschiedenen vCard-Dateien steht
                    outfile.write('\n')
                except UnicodeEncodeError:
                    print("Encode error while processing", vcf)

    print(f"All vCard files have been merged into {output_file_path}")

Check out similar posts by category: Python