Tôi muốn thay đổi a.txt
thành b.kml
.Cách đổi tên tệp bằng Python
Trả lời
Sử dụng os.rename
:
os.rename('a.txt', 'b.kml')
import shutil
shutil.move('a.txt', 'b.kml')
Điều này sẽ hoạt động để đổi tên hoặc di chuyển tệp.
'shutil.move' không phải là một tốt tùy chọn do không phải là một hoạt động nguyên tử. Nếu tập tin được mở, ví dụ, 'shutil.move' sẽ tạo một tập tin với' new_name', nhưng sẽ không xóa tập tin với 'old_name' do đó để lại cho bạn với hai tập tin. Mặt khác, 'os.rename' sẽ không làm gì cả, đó là tùy chọn * tốt hơn *. Với 'shutil.move', ngay cả khi bạn gặp lỗi, bạn vẫn phải lo lắng về việc kiểm tra và xóa tệp lừa đảo. Chỉ cần không có giá trị khi ** một công cụ tốt hơn tồn tại: 'os.rename' **. – mvbentes
os.rename(old, new)
này được tìm thấy trong các tài liệu Python: http://docs.python.org/library/os.html
tập tin có thể bên trong một thư mục, trong trường hợp đó chỉ định đường dẫn:
import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
Bạn có thể sử dụng os.system để gọi thiết bị đầu cuối để hoàn thành tác vụ:
os.system('mv oldfile newfile')
Chỉ trên máy unix, mặc dù phải không? – LarsH
có, điều này sẽ chỉ hoạt động trên một máy tính dựa trên Unix như 'mv' là một chương trình dòng lệnh dựng sẵn unix để di chuyển/đổi tên một tệp. –
Tại sao bạn gọi một thiết bị đầu cuối và xác định một lệnh UNIX chỉ khi bạn có thể làm điều đó từ python trong một cách đa nền tảng? – EndermanAPM
Từ Python 3.4, người ta có thể sử dụng mô-đun pathlib để giải quyết vấn đề này.
Nếu bạn tình cờ được trên một phiên bản cũ, bạn có thể sử dụng phiên bản backported tìm thấy here
Giả sử bạn đang không ở trong các đường dẫn gốc (chỉ cần thêm một chút khó khăn với nó) bạn muốn đổi tên , và phải cung cấp một đường dẫn đầy đủ, chúng ta có thể xem xét điều này:
some_path = 'a/b/c/the_file.extension'
Vì vậy, bạn có thể đường dẫn của bạn và tạo ra một đối tượng Path
ra khỏi nó:
from pathlib import Path
p = Path(some_path)
Chỉ để cung cấp một số thông tin xung quanh đối tượng này chúng ta có bây giờ, chúng ta có thể trích xuất mọi thứ ra khỏi nó. Ví dụ, nếu vì lý do gì chúng tôi muốn đổi tên các tập tin bằng cách sửa đổi tên tập tin từ the_file
để the_file_1
, sau đó chúng tôi có thể nhận được phần filename:
name_without_extension = p.stem
Và vẫn giữ phần mở rộng trong tay cũng như:
ext = p.suffix
chúng tôi có thể thực hiện sửa đổi của chúng tôi với một thao tác chuỗi đơn giản:
new_file_name = "{}_{}".format(name_without_extension, 1)
Và bây giờ chúng tôi có thể thực hiện đổi tên của chúng tôi bằng cách gọi phương pháp rename
trên đối tượng con đường chúng tôi tạo ra và gắn vào các ext
để hoàn thành cấu trúc đổi tên thích hợp chúng ta muốn:
p.rename(Path(p.parent, new_file_name + ext))
More ngay để giới thiệu đơn giản của nó:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}".format(p.stem, 1) + p.ext))
Tại sao bạn làm điều này thay vì câu trả lời được chấp nhận? Có vẻ phức tạp hơn rất nhiều – rbennell
Vâng @rbennell, hầu hết câu trả lời này là một lời giải thích. Câu trả lời thực sự chỉ là ba dòng ở cuối. Hơn nữa, câu trả lời được chấp nhận được thực hiện một cách rõ ràng cho sự thay đổi tên đó. Câu trả lời này cung cấp một cách để hiển thị cách bạn có thể thao tác tên tệp để bảo toàn các phần mà bạn muốn trong đường dẫn hoặc tên của tệp. Hơn nữa, thư viện 'pathlib' được giới thiệu trong python 3.4 để chia sẻ câu trả lời ở đây cũng cung cấp phơi sáng cho một mô-đun rắn để thể hiện tính linh hoạt và cách sử dụng của nó cho các yêu cầu phức tạp hơn. – idjaw
import shutil
import os
files = os.listdir("./pics/")
for key in range(0, len(files)):
print files[key]
shutil.move("./pics/" + files[key],"./pics/img" + str(key) + ".jpeg")
này nên làm điều đó . python 3+
Sử dụng os.rename
. Nhưng bạn phải truyền đường dẫn đầy đủ của cả hai tệp vào hàm. Nếu tôi có một tập tin a.txt
trên máy tính để bàn của tôi vì vậy tôi sẽ làm và tôi cũng phải cung cấp đầy đủ các tập tin đổi tên quá.
os.rename ('C: \ Users \ Desktop \ a.txt', 'C: \ Users \ Desktop \ b.kml')
- 1. Đổi tên tệp, Python/Jython
- 2. Cách đổi tên tệp bằng NSFileManager
- 3. Thay thế các tên tệp bằng python
- 4. Đổi tên tệp bằng Git
- 5. Cách lấy tên tệp của mô-đun __main__ bằng Python?
- 6. Đổi tên tệp hàng loạt bằng Bash
- 7. Cách thay đổi tên mô-đun Python?
- 8. Làm cách nào để đổi tên tệp bằng R?
- 9. Đổi tên một tệp bằng cách sử dụng Java
- 10. Đổi tên tên tệp có chứa dấu cách
- 11. android, Cách đổi tên tệp?
- 12. Cách lấy ngày sửa đổi tệp bằng UTC từ Python
- 13. Sửa đổi cách CompositeRollingAppender đổi tên tệp
- 14. Tên tệp Python stdin
- 15. Đổi tên tệp PHP
- 16. Làm cách nào để đổi tên một tên tệp sau khi tải lên bằng php?
- 17. TimedRotatingFileHandler Thay đổi tên tệp?
- 18. Cách ghi tệp wav stereo bằng Python?
- 19. Xóa hoặc Đổi tên tệp bằng tay cầm mở
- 20. Thay đổi tên tệp bằng TortoiseSVN trên Windows
- 21. đổi tên tệp bằng cmd bằng cách sử dụng ký tự đại diện
- 22. đổi tên tệp theo dõi/xóa bằng FSEvents trên Lion
- 23. cách đổi tên cột bằng T-SQL
- 24. Đổi tên tệp bằng Visual Studio và TortoiseSVN
- 25. Git: Đổi tên tệp
- 26. Sửa đổi tên tệp trước khi lưu bằng Carrierwave
- 27. Đổi tên tệp bội số bằng vòng lặp bash
- 28. Cách tạo tệp PDF bằng Python
- 29. Cách tải tệp lên Soundcloud bằng Python?
- 30. Vòng đặt tên bằng Python
Đừng quên "nhập os" – Vladtn
Cần lưu ý rằng nếu các tập tin không có trong thư mục làm việc, bạn sẽ cần đường dẫn đầy đủ. – EndermanAPM