<Python> Ein Quiz zum Batch-Konvertieren von Dateinamen, die durch eine bestimmte Zeichenfolge als Teil des Dateinamens getrennt sind

Hintergrund

Jemand in Python unter https://qiita.com/ozaki25/items/33a57ad7eea55822c764. .. .. Weil es eine Geschichte war Ich habe es für einen Moment in Slack geschrieben, aber ich habe eine Geschichte mit der Aufschrift "Explanation ~" (wahrscheinlich) und ich werde es schnell schreiben.

Der Schreibstil ist mein eigenes Hobby, also gibt es einen besseren Weg, ihn zu schreiben! Lass es mich wissen, bitte.

Dinge die zu tun sind

Eine kurze Beschreibung des Python-Codes

Umgebung

Ubuntu 18.04 + Python 3.7.6.

$ cat /proc/version
Linux version 4.15.0-111-generic (buildd@lcy01-amd64-011) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #112-Ubuntu SMP Thu Jul 9 20:32:34 UTC 2020

$ python3 -V
Python 3.7.6

Geposteter Code

import os
import re
from glob import glob
p_file = glob("./*.csv")
_ = [ os.rename(file, re.sub(r'^.*_([0-9]{1,3}).*(\.csv)$', r'\1\2', file)) for file in p_file ] 

Aus irgendeinem Grund wurde der in Slack eingefügte Code in seltsamen Code konvertiert. : Nerd: Bitte sehen Sie diesen Code richtig.

Infolgedessen geschah dies, weil der Eintragseigentümer auf "einem Liner" bestand. .. Natürlich hat Python auch eine CLI, damit ich das machen kann, aber ich verstehe nicht warum, also habe ich hier angehalten.


Datenerstellung mit einem Liner? Es scheint also ein wenig übel zu sein.

!touch aaa_1.csv;touch aaa_2.csv;touch aaa_4.csv;touch aaa_9.csv;touch aaa_10.csv;touch aaa_99.csv;touch aaa_100.csv;touch aaa_999.csv;touch aaa_1000.csv

Nun zur Erklärung.

import os
import re
from glob import glob

Die Umbenennung der Datei lautet os.rename Regulärer Ausdruck für das Ersetzen von Dateinamen Ich benutzte.

Ich habe glob verwendet, um das Dateilistenobjekt abzurufen. Ich habe in diesen Tagen eine ähnliche Pfadlib verwendet, ich verwende kein Join mehr.

p_file = glob("./*.csv")

Verwenden Sie glob, um das Dateilistenobjekt abzurufen. Ich wollte keine zusätzlichen Dateien als Ziel festlegen, aber da glob die Nummernübereinstimmung nicht unterstützt, ist es vorerst keine gute Idee, alle CSV-Erweiterungen zu erhalten. Ich war ein bisschen süchtig danach.

_ = [ os.rename(file, re.sub(r'^.*_([0-9]{1,3}).*(\.csv)$', r'\1\2', file)) for file in p_file ] 

Ja, ich weiß es nicht, wenn ich nicht daran gewöhnt bin. Ich habe die Einschlussnotation verwendet, um die Anzahl der Zeilen zu reduzieren (obwohl es verschiedene Vorteile gibt).

Es sieht so aus, wenn Sie es ohne Einschlüsse schreiben.

for file in p_file:
  re_file = re.sub(r'^.*_([0-9]{1,3}),*(\.csv)$', r'\1\2',p_file)
  os.rename(file, re_file)

Es macht wenig Sinn, das Ergebnis _ zuzuweisen. Wenn Sie es nicht angeben, ist das Konsolenprotokoll nicht schön. Daher ist es eine sorgfältige Maßnahme, um zu verhindern, dass es angezeigt wird.

[None, None, None, None, None, None, None, None, None, None]

Was ist es. .. .. Dies.

Der letzte ist ein regulärer Ausdruck Das 1- bis 3-stellige Teil und das Erweiterungsteil werden extrahiert und zusammengebaut (Standard-Match + Ersatz). Es kann ein wenig süß sein, mit regulären Ausdrücken einzugrenzen.

r'^.*_([0-9]{1,3}).*(\.csv)$' ⇛ r'\1\2'

Es wird empfohlen, r (Zeilenzeichenfolgenausdruck) zu verwenden, da es ohne zusätzliches Escapezeichen ausgedrückt werden kann.

Umleitung

Ich mache mir Sorgen um die Leseberechtigung der Datei oder so, aber diesmal lasse ich sie weg. Wenn Sie jedoch unbeaufsichtigt arbeiten, ist es besser, grundlegende Berechtigungen zum Überprüfen / Lesen / Schreiben der Existenz einzuschließen.

Es kann mit os.rename fehlschlagen, daher sollten Sie auch ~ außer versuchen. Dieses Mal habe ich mich auf Schnelligkeit konzentriert und sie übersprungen (Entschuldigung: umbrella2 :)

In dem im Unternehmen verwendeten Code wird die CSV-Datei gelesen und in den DataFrame importiert. Es wird jedoch eine Klasse erstellt und ausgeführt, die die Existenzprüfung und die Lese- / Schreibprüfung umschließt.

Am Ende

Ich wurde kürzlich versetzt und da ich das ganze Bild des Projekts sehen kann, für das ich verantwortlich bin, fühle ich mich unter Druck gesetzt. .. .. Ich bin erleichtert, Python-Code zu schreiben (nur ein Scherz: heat_smile :).

Recommended Posts

<Python> Ein Quiz zum Batch-Konvertieren von Dateinamen, die durch eine bestimmte Zeichenfolge als Teil des Dateinamens getrennt sind
Ruft den Variablennamen der Variablen als Zeichenfolge ab.
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Konvertieren Sie den Zeichencode der Datei mit Python3
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
[Ansible] Beispiel für ein Playbook, das der ersten Zeile der Datei eine Zeichenkette hinzufügt
[Ruby] Wie ersetze ich nur einen Teil der Zeichenkette, der mit dem regulären Ausdruck übereinstimmt?
[Python3] Formatieren Sie die Zeichenfolge mit dem Variablennamen als Schlüssel
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
[Python] Ändern Sie den Namen der Bilddatei in eine Seriennummer
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
pandas Ruft den Namen einer Spalte ab, die ein bestimmtes Zeichen enthält
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
Python vba zum Erstellen einer Datumszeichenfolge zum Erstellen eines Dateinamens
Rufen Sie die Formel in der Excel-Datei als Zeichenfolge in Python ab
[Python-Scraping] Geben Sie die URL und den Titel der Site mit einem bestimmten Schlüsselwort in eine Textdatei ein
Ein Memo, das durch Umbenennen der Dateinamen im Ordner mit Python organisiert wird
Django super Einführung von Python-Anfängern! Teil 3 Ich habe versucht, die Vererbungsfunktion für Vorlagendateien zu verwenden
Mayungos Python Learning Episode 6: Ich habe versucht, eine Zeichenkette in eine Zahl umzuwandeln
[Python] So invertieren Sie eine Zeichenfolge
Django super Einführung von Python-Anfängern! Teil 2 Ich habe versucht, die praktischen Funktionen der Vorlage zu nutzen
Ich möchte einen Teil der Excel-Zeichenfolge mit Python einfärben
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
[Python] Ruft den Zeichencode der Datei ab
[Einführung in Python] Eine ausführliche Erklärung der in Python verwendeten Zeichenkettentypen!
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Die Geschichte, ein Tool zum Laden von Bildern mit Python zu erstellen ⇒ Speichern unter
So geben Sie eine Zeichenfolge in Python ein und geben sie unverändert oder in die entgegengesetzte Richtung aus.
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
Teilt die Zeichenfolge durch die angegebene Anzahl von Zeichen. In Ruby und Python.
Hinweis) Stapelkonvertierung bestimmter Symbole in einer Zeichenfolge mit einem Wörterbuch
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
Python-Tricks: Eine Kombination aus enumerate () und zip (), bei der überprüft wird, ob eine Zeichenfolge in eine Zahl konvertiert werden kann, wobei die Zeichenfolge als Zahl sortiert wird
[Python] Speichern Sie die von OpenCV importierten Videodaten als JPG-Datei mit Seriennummer
[Python] Sie können ein Objekt mithilfe des Pickle-Moduls in einer Datei speichern.
[Python] Lassen Sie nur Elemente im Array, die mit einer bestimmten Zeichenfolge beginnen
Kündigen Sie die Wettervorhersage (Regen usw.) von DM als Teil der Funktion des Bots an
Nehmen Sie eine Instanz einer Python-Ausnahmeklasse nicht direkt als Argument für die Ausnahmeklasse!
Fügen Sie eine Funktion hinzu, um dem Wetter heute mitzuteilen, dass der Bot locker ist (hergestellt von Python).
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] So erweitern Sie Variablen in einer Zeichenfolge
#Eine Funktion, die den Zeichencode einer Zeichenfolge zurückgibt
Lesen Sie die XML-Datei anhand des Python-Tutorials
Geben Sie das Ausgabeergebnis von sklearn.metrics.classification_report als CSV-Datei aus
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
[Python] Wenn Sie eine Datei mit demselben Namen wie das zu importierende Modul erstellen, tritt ein Attributfehler auf.
Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren
Csv spuckte eine Liste mit Dateinamen, zuletzt geänderten Daten und Zeichencodes in Python3 aus
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
Was scheint eine Vorlage für den Standardeingabe-Teil des Competition Pro in Python3 zu sein
Python> __init __. Py> Erforderlich, um das angegebene Verzeichnis als Paket zu behandeln (leere Datei ist akzeptabel)
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
So wechseln Sie die Konfigurationsdatei, die von Python gelesen werden soll
So mischen Sie einen Teil der Python-Liste (at random.shuffle)
Ändern Sie das Standardausgabeziel in eine Datei in Python
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste