Das funktioniert gut:
os.path.join(dir_name, base_filename + "." + filename_suffix)
Beachten Sie, dass dies os.path.join()
nur existiert, weil verschiedene Betriebssysteme unterschiedliche Pfadtrennzeichen verwenden. Dieser Unterschied wird ausgeglichen, sodass plattformübergreifender Code nicht für jedes Betriebssystem mit Sonderfällen überfüllt sein muss. Für Dateinamen "Erweiterungen" (siehe Fußnote) ist dies nicht erforderlich, da sie auf jedem Betriebssystem immer mit einem Punktzeichen mit dem Rest des Namens verbunden sind.
Wenn Sie sich durch die Verwendung einer Funktion trotzdem besser fühlen (und Ihren Code unnötig komplizieren möchten), können Sie dies tun:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Wenn Sie Ihren Code lieber sauber halten möchten, fügen Sie einfach den Punkt in das Suffix ein:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
(Dieser Ansatz ist auch mit den Suffix-Konventionen in pathlib kompatibel , die in Python 3.4 eingeführt wurden.)
Fußnote: Unter Nicht-Micorsoft-Betriebssystemen gibt es keinen Dateinamen "Erweiterung". Seine Präsenz unter Windows kommt von MS-DOS und FAT, die es von CP / M ausgeliehen haben, das seit Jahrzehnten tot ist. Dieser Punkt plus drei Buchstaben, den viele von uns gewohnt sind, zu sehen, ist nur ein Teil des Dateinamens auf jedem anderen modernen Betriebssystem, wo er keine eingebaute Bedeutung hat.
.
. Hierfür kann man verwendenos.extsep
.os.path.join(dir_name, base_filename, os.extsep, extension)
. Ihre Antwort ist vollkommen richtig.+
zwischen Dateinamen Teile setzen. Fügtos.path.join()
(/
z. B.) betriebssystemspezifische Pfadtrennzeichen zwischen den Argumenten hinzu (da @ sәɹoɈ sie korrekt in seiner Antwort hat. Daher lautet die korrekte Form Ihres Code-Snippets:os.path.join(dir_name, base_filename + os.extsep + extension)
Wenn Sie das Glück haben, Python 3.4+ auszuführen, können Sie Folgendes verwenden
pathlib
:quelle
with_suffix()
wird es ersetzt, anstatt es anzuhängen. Sie wollen so etwas wiePath(dirname, filename2 + suffix)
Warum nicht einfach:
quelle
Verwenden
os.path.join
Sie einfach , um Ihren Pfad mit dem Dateinamen und der Erweiterung zu verbinden. Verwenden Siesys.argv
diese Option, um auf Argumente zuzugreifen, die bei der Ausführung an das Skript übergeben wurden:Führen Sie das Skript einfach wie folgt aus:
quelle