Angenommen, index.py
mit CGI habe ich eine Post-Datei foo.fasta
, um die Datei anzuzeigen. Ich möchte die foo.fasta
Dateierweiterung so ändern , dass sie foo.aln
in der Anzeigedatei angezeigt wird. Wie kann ich es tun?
python
rename
file-extension
MysticCodes
quelle
quelle
os.rename(root, root + new_extension)
sollte lesenos.rename(renamee, root + new_extension)
Ein eleganter Weg mit pathlib.Path :
from pathlib import Path p = Path('mysequence.fasta') p.rename(p.with_suffix('.aln'))
quelle
.with_suffix()
die Eigenschaften.suffix
und.suffixes
sollte Setter haben.import os thisFile = "mysequence.fasta" base = os.path.splitext(thisFile)[0] os.rename(thisFile, base + ".aln")
Wobei thisFile = der absolute Pfad der Datei ist, die Sie ändern
quelle
base, _ = os.path.splitext(thisFile)
ist idiomatischer.Ab Python 3.4 gibt es eine in pathlib integrierte Bibliothek. Der Code könnte also ungefähr 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 :)
quelle
new_filename = f"{Path(filename).stem}.aln"
😎😎😎p.parent / (p.stem + '.aln')
wird dir einen neuen Weg geben.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 die Zeichenfolge "name" zugreifen, die 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"
quelle
Wie AnaPana erwähnte, ist pathlib in Python 3.4 neuer und einfacher, und es gibt eine neue with_suffix-Methode, die dieses Problem leicht lösen kann:
from pathlib import Path new_filename = Path(mysequence.fasta).with_suffix('.aln')
quelle
Pathlib verwenden und den vollständigen Pfad beibehalten:
from pathlib import Path p = Path('/User/my/path') new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')
quelle
new_p = Path(p.with_suffix('').as_posix() + '.aln')
Leider habe ich einen Fall mit mehreren Punkten auf dem Dateinamen erlebt, bei dem Splittext nicht gut funktioniert hat ... meine Arbeit um:
file = r'C:\Docs\file.2020.1.1.xls' ext = '.'+ os.path.realpath(file).split('.')[-1:][0] filefinal = file.replace(ext,'.zip') os.rename(file ,filefinal)
quelle
>> file = r'C:\Docs\file.2020.1.1.xls' >> ext = '.'+ os.path.realpath(file).split('.')[-1:][0] >> filefinal = file.replace(ext,'.zip') >> os.rename(file ,filefinal)
Schlechte Logik zum Wiederholen der Erweiterung, Beispiel: 'C: \ Docs \ .xls_aaa.xls.xls'
quelle