Giả sử từ index.py
với CGI, tôi có tệp bài đăng foo.fasta
để hiển thị tệp. Tôi muốn thay đổi tiện ích mở rộng tệp của foo.fasta
thành foo.aln
trong tệp hiển thị. Tôi làm nó như thế nào?Thay đổi phần mở rộng tệp bằng Python
Trả lời
os.path.splitext()
, os.rename()
ví dụ:
# 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")
đâu thisFile = đường dẫn tuyệt đối của tập tin bạn đang thay đổi
Tôi thích câu trả lời này nhiều hơn vì nó cung cấp một ví dụ và không chỉ trích dẫn các phương thức cần thiết để hoàn thành nhiệm vụ. Cảm ơn @FryDay – sadmicrowave
Sử dụng này:
os.path.splitext("name.fasta")[0]+".aln"
Và đây là cách thức hoạt động trên:
Phương pháp splitext tách tên từ phần mở rộng tạo ra một tuple:
os.path.splitext("name.fasta")
các tuple tạo bây giờ chứa các chuỗi "Tên" và "FASTA". Sau đó, bạn cần phải truy cập chỉ chuỗi "tên" đó là yếu tố đầu tiên của tuple:
os.path.splitext("name.fasta")[0]
Và sau đó bạn muốn thêm tiện ích mới cho tên đó:
os.path.splitext("name.fasta")[0]+".aln"
Bắt đầu từ Python 3.4 có pathlib thư viện cài sẵn. Vì vậy, các mã có thể là một cái gì đó như:
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
Tôi yêu pathlib :)
Đây là một thư viện nghiêm trọng! Cảm ơn! –
Điều này thậm chí còn tốt hơn với cú pháp nội suy chuỗi python 3,6 (https://www.python.org/dev/peps/pep-0498/) 'new_filename = f" {Đường dẫn (tên tệp) .stem} .aln "' –
Hãy cẩn thận - thân cây cũng cắt đường nếu có. Nếu bạn muốn đổi tên tập tin và nếu một đường dẫn được cung cấp (mà thừa nhận nó không có trong câu hỏi), kỹ thuật này sẽ thất bại. –
Một cách thanh lịch sử dụng pathlib.Path:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
Mặc dù OP không yêu cầu thực hiện đổi tên, nó nằm trong thẻ và nếu bạn định thực hiện đổi tên và nếu có thể đầu vào có thể có đường dẫn chứ không chỉ tên tệp, kỹ thuật này là đúng một. –
- 1. Thay đổi phần mở rộng tệp trong SharePoint
- 2. CakePHP Xem thay đổi phần mở rộng
- 3. Làm thế nào để thay đổi phần mở rộng tệp PHP bằng tệp .htaccess trên GoDaddy Linux Hosting?
- 4. Tìm và đổi tên tệp không có phần mở rộng?
- 5. Cách lấy phần mở rộng của tệp bằng PHP?
- 6. Tại sao Vim lưu tệp bằng phần mở rộng ~?
- 7. Chạy Selenium WebDriver bằng Python với các phần mở rộng (tệp .crx)
- 8. trong phần mở rộng Python C
- 9. Làm cách nào để thay đổi phần mở rộng của nhiều tệp trong một thư mục?
- 10. Mở rộng Python bằng C/C++
- 11. Thay đổi phần mở rộng của tệp khi người dùng thay đổi Lưu dưới dạng Lưu dưới dạng SaveFileDialog
- 12. Python: os.listdir thay thế/một số tiện ích mở rộng
- 13. Đổi tên tệp đã tải lên bằng PHP nhưng giữ phần mở rộng
- 14. Phần mở rộng tệp cho PowerShell 3
- 15. Nhập mô-đun python không có phần mở rộng .py
- 16. Xóa phần mở rộng .php bằng mod_rewrite
- 17. Linux: xóa phần mở rộng tệp cho nhiều tệp
- 18. Phần mở rộng của Python cho Win64 qua GCC
- 19. Thay đổi phần mở rộng tệp của nhiều tệp trong một thư mục có thiết bị đầu cuối/bash?
- 20. Phương pháp mở rộng bằng Python
- 21. phần mở rộng tệp .kt? Loại tệp này là gì?
- 22. Mở rộng Vim (qua Python)?
- 23. Delphi - phần mở rộng identcache
- 24. FileUpload tải tệp mở rộng
- 25. Get Tên tập tin Nếu không mở rộng bằng Python
- 26. UIDocumentInteractionController, Không có phần mở rộng tệp nhưng UTI
- 27. quyền thay đổi tệp trong python
- 28. Chuyển đổi một lớp học thành một phần mở rộng
- 29. Mở rộng các lớp cơ sở bằng Python
- 30. Chuyển đổi loại MIME thành tệp Mở rộng PHP
Bạn có thể cụ thể hơn, tôi thấy tài liệu trước nhưng cũng không hiệu quả. – MysticCodes
Sử dụng chức năng đầu tiên để lấy chân đế. Kết hợp nó với phần mở rộng mới và truyền tên tệp cũ và tên tệp mới cho hàm thứ hai. –
Chỉnh sửa: 'os.rename (root, root + new_extension)' nên đọc 'os.rename (renamee, root + new_extension)' – mloskot