Angenommen, von index.py
mit CGI habe ich Beitragsdatei foo.fasta
, um die Datei anzuzeigen. Ich will es verändern foo.fasta
's Dateierweiterung ist foo.aln
in der Anzeigedatei. Wie kann ich es tun?
os.path.splitext()
, os.rename()
beispielsweise:
# renamee is the file getting renamed, pre is the part of file name before extension and ext is current extension
pre, ext = os.path.splitext(renamee)
os.rename(renamee, pre + new_extension)
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")
Dabei ist thisFile der absolute Pfad der Datei, die Sie ändern
Ein eleganter Weg mit pathlib.Path :
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
Ausgehend von Python 3.4 gibt es pathlib eine eingebaute Bibliothek. Der Code könnte also etwa so aussehen:
from pathlib import Path
filename = "mysequence.fasta"
new_filename = Path(filename).stem + ".aln"
https://docs.python.org/3.4/library/pathlib.html#pathlib.PurePath.stem
Ich liebe Pathlib :)
Benutze das:
os.path.splitext("name.fasta")[0]+".aln"
Und so funktioniert das oben Genannte:
Die Splitext-Methode trennt den Namen von der Erweiterung und erstellt ein Tupel:
os.path.splitext("name.fasta")
das erstellte Tupel enthält jetzt die Zeichenfolgen "name" und "fasta". Dann müssen Sie nur auf den String "name" zugreifen, der das erste Element des Tupels ist:
os.path.splitext("name.fasta")[0]
Und dann möchten Sie diesem Namen eine neue Erweiterung hinzufügen:
os.path.splitext("name.fasta")[0]+".aln"
Verwenden von pathlib und Beibehalten des vollständigen Pfads:
from pathlib import Path
p = Path('/User/my/path')
new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')