wake-up-neo.com

Ändern der Dateierweiterung in Python

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?

51
MysticCodes

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

60
FryDay

Ein eleganter Weg mit pathlib.Path :

from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
44
Nikita Malyavin

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 :)

19
AnaPana

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"
13
multigoodverse

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')
2
PollPenn