Dateiname und Überschrift dynamisch an Dateiname anpassen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sports7
User
Beiträge: 10
Registriert: Dienstag 18. April 2017, 12:47

Hallo liebe Community,

ich lasse mir ein Histogramm plotten und speichere dieses als .png-Datei ab. Nun möchte ich, dass der Dateiname sowie die Überschrift des Histogramms automatisch den Namen des ausgelesen Excel-Files, das zur Erstellung des Histogramms, annimmt. Gibt es dafür einen Befehl?

Vielen Dank für eure Hilfe!

Viele Grüße
sports17
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja. Musst du nur an der richtigen Stelle einsetzen.

Im Ernst - glaubst du, man kann dir helfen, wenn du weder Code zeigst, noch in irgendeinem nennenswerte Umfang darauf eingehst, wie du vorgehst?
BlackJack

Ich hätte ja „nein“ geantwortet — automatisch geht das nicht, das muss man schon ausprogrammieren. Sollte aber einfach sein. :-)
sports7
User
Beiträge: 10
Registriert: Dienstag 18. April 2017, 12:47

Code: Alles auswählen

import os
import csv
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import pylab as py
import xlsxwriter

#Define input and output path
inputPathExpl = r"C\Programme\Beispiel"
inputPath = inputPathExpl.replace("\\", "/")

outputPathExpl = r"C:\Programme\Beipsiel\Test"
outputPath = outputPathExpl.replace("\\", "/")

filename = "beispiel.csv"
 fig = plt.figure()
    ax1 = fig.add_subplot(111)


    ax1.set_xlabel("Zeit")
    ax1.set_ylabel("Weg")
    ax1.set_ylim([0, 1])
    ax1.tick_params("y", colors = "b")
    ax1.grid()
    yAx1 = gaussFunc()
    plt.plot(x, yAx1, color="orange")    
    

    lines, labels = ax1.get_legend_handles_labels()
    lines2, labels2 = ax2.get_legend_handles_labels()
    ax2.legend(lines + lines2, labels + labels2, loc=0)    
    
    
    plt.savefig(outputPath + "/beipsiel.png", bbox_inches="tight", dpi=plotResol)
Das beispiel als Dateiname soll eben nun an filename ohne das .csv-Dateiendung angepasst werden. Außerdem soll der Titel ebenfalls den Filename ohne Dateiendung erhalten.

Kann jemand weiterhelfen?
Zuletzt geändert von Anonymous am Dienstag 18. April 2017, 15:59, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Code: Alles auswählen

name = os.path.splitext(os.path.basename(filename))[0]
png_name = os.path.join(basedir, "{}.png".format(name))
Und den namen kannst du auch als Titel des Plots festlegen, siehe zB http://stackoverflow.com/questions/1244 ... matplotlib
sports7
User
Beiträge: 10
Registriert: Dienstag 18. April 2017, 12:47

Ich habe versucht deine genannten Befehle zu verwenden, leider ohne Erfolg. An welcher Stelle muss ich diese denn im Code hinkopieren?

Danke schon im Voraus für deine Hilfe!

VG
sports7
User
Beiträge: 10
Registriert: Dienstag 18. April 2017, 12:47

__deets__ hat geschrieben:

Code: Alles auswählen

name = os.path.splitext(os.path.basename(filename))[0]
png_name = os.path.join(basedir, "{}.png".format(name))
Und den namen kannst du auch als Titel des Plots festlegen, siehe zB http://stackoverflow.com/questions/1244 ... matplotlib
Bei mir kommt als Fehlermeldung, dass "basedir" nicht definiert ist. Was mache ich falsch?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@sports7: __deets_ Zeilen sind nur ein Beispiel, die Dich auf die Funktionen aus os.path, insbesondere os.path.splitext, basename und join. Am besten Du liest Dir dazu die Dokumentation durch und überlegst, wie man sie für Dein Problem anwenden kann.
Antworten