Supponiamo di index.py
con CGI, ho il file postale foo.fasta
per visualizzare il file. Voglio cambiare l'estensione del file foo.fasta
per essere foo.aln
nel file di visualizzazione. Come posso farlo?Modifica dell'estensione del file in Python
risposta
os.path.splitext()
, os.rename()
ad esempio:
# 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")
Dove thisFile = il percorso assoluto del file che si sta modificando
Mi piace questa risposta di più perché fornisce un esempio e non cita solo i metodi necessari per eseguire l'attività. Grazie @FryDay – sadmicrowave
Utilizzare questa:
os.path.splitext("name.fasta")[0]+".aln"
Ed ecco come le opere di cui sopra:
Il metodo splitext separa il nome dall'estensione creare una tupla:
os.path.splitext("name.fasta")
tupla creato ora contiene le stringhe "nome" e "FASTA". allora avete bisogno di accedere solo la stringa "nome" che è il primo elemento della tupla:
os.path.splitext("name.fasta")[0]
E poi si vuole aggiungere una nuova estensione a quel nome:
os.path.splitext("name.fasta")[0]+".aln"
A partire da Python 3.4 contiene la libreria integrata pathlib. Così il codice potrebbe essere qualcosa del tipo:
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
amo pathlib :)
Questa è una libreria seriamente fantastica !!! Grazie! –
Questo è ancora meglio con la sintassi dell'interpolazione di stringa Python 3.6 (https://www.python.org/dev/peps/pep-0498/) 'new_filename = f" {Path (filename) .stem} .aln "' –
Fai attenzione: anche il gambo spoglia il percorso se ne è presente uno. Se si desidera rinominare il file e se è stato fornito un percorso (che certamente non era nella domanda), questa tecnica fallirebbe. –
Un modo elegante utilizzando pathlib.Path:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
Sebbene l'OP non abbia chiesto di eseguire una rinomina, era nei tag, e se hai intenzione di eseguire un cambio di nome e se è possibile che l'input possa avere un percorso e non solo un nome file, questa tecnica è quella giusta uno. –
- 1. modifica autorizzazione dei file in python
- 2. Modifica file jar con python
- 3. Modifica l'estensione del file per i file in una cartella in Python
- 4. Modifica locali in Python
- 5. Modifica manuale del file * .designer.cs
- 6. Modifica distanza in Python
- 7. Python 2to3 non modifica i file
- 8. Python - piccola modifica a un file enorme
- 9. Ottenere file di data di modifica in Python
- 10. Modifica file in modalità di sola lettura in Python
- 11. Debug Python: modifica del codice al volo
- 12. modifica del codice Python nel debugger
- 13. Modifica del tipo di stringa in byte in Python 2.7
- 14. Modifica di Python in Emacs
- 15. Python Modifica intestazioni CSV
- 16. Modifica del file hosts per reindirizzare l'url?
- 17. Come ottenere la data di modifica del file in UTC da Python
- 18. Modifica autorizzazioni del file caricato da PHP
- 19. Modifica metadati del file pdf con pypdf
- 20. Modifica autorizzazioni via ftp in python
- 21. Modifica file Jar in esecuzione
- 22. Modifica il valore specifico nel file CSV tramite Python
- 23. in caso di modifica dell'elemento di input del file
- 24. Modifica del modo in cui CompositeRollingAppender rinomina i file
- 25. Modifica del contenuto di file esistente in Java
- 26. Modifica sintassi predefinita in base a nome del file
- 27. Passwords in modifica della modalità di modifica del metodo Emacs
- 28. Modifica oggetto in multiprocessing in python
- 29. Modifica dell'implementazione di una funzione in Python
- 30. modifica dell'ora dell'ultima modifica del file tramite touch() e ottenimento del risultato con filemtime()
Può essere più preciso, ho visto la documentazione anche prima, ma non ha funzionato. – MysticCodes
Usa la prima funzione per ottenere la base. Combinalo con la nuova estensione e passa il vecchio nome file e il nuovo nome file alla seconda funzione. Correzione –
: 'os.rename (root, root + new_extension)' dovrebbe leggere 'os.rename (renamee, root + new_extension)' – mloskot