Q-3. Lệnh nào dưới đây đóng tệp
names = open["names.txt", "r"] for line in names: print["line"]3 đã mở nếu đoạn mã sau đã được viết?
ref_file = open["myText.txt", "r"]
Q-4. Lệnh nào dưới đây được sử dụng để thêm chuỗi sau vào cuối đối tượng tệp
names = open["names.txt", "r"] for line in names: print["line"]4?
Q-5. Nội dung của
names = open["names.txt", "r"] for line in names: print["line"]5 được liệt kê ở đây
Khối mã nào sau đây sẽ in ra tất cả các tên trong
names = open["names.txt", "r"] for line in names: print["line"]5?
names = open["names.txt", "r"] for line in names: print[names]1
names = open["names.txt", "r"] for line in names: print[names]
names = open["names.txt", "r"] for line in names: print[names]2
names = open["names.txt", "r"] for line in names: print[line]
names = open["names.txt", "r"] for line in names: print[names]3
names = open["names.txt", "r"] for line in names: print["line"]
- Mở tệp tin
- Đọc hoặc viết [thực hiện thao tác]
- Đóng tệp
Q-7. Có bao nhiêu lỗi trong đoạn mã dưới đây?
Tệp được đặt tên vị trí trên đĩa để lưu trữ thông tin liên quan. Chúng được sử dụng để lưu trữ vĩnh viễn dữ liệu trong bộ nhớ cố định [e. g. ổ đĩa cứng]
Do Bộ nhớ truy cập ngẫu nhiên [RAM] không ổn định [mất dữ liệu khi tắt máy tính], chúng tôi sử dụng các tệp để sử dụng dữ liệu trong tương lai bằng cách lưu trữ chúng vĩnh viễn
Khi chúng ta muốn đọc hoặc ghi vào một tệp, trước tiên chúng ta cần mở nó. Khi chúng tôi hoàn tất, nó cần được đóng lại để các tài nguyên được liên kết với tệp được giải phóng
Do đó, trong Python, thao tác tệp diễn ra theo thứ tự sau
Mở tệp bằng Python
Python có chức năng
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
2 tích hợp để mở tệp. Hàm này trả về một đối tượng tệp, còn được gọi là tay cầm, vì nó được sử dụng để đọc hoặc sửa đổi tệp cho phù hợp________số 8Chúng tôi có thể chỉ định chế độ trong khi mở tệp. Trong chế độ, chúng tôi chỉ định xem chúng tôi muốn đọc
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
3, viết f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
4 hay nối thêm f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
5 vào tệp. Chúng tôi cũng có thể chỉ định nếu chúng tôi muốn mở tệp ở chế độ văn bản hoặc chế độ nhị phânMặc định là đọc ở chế độ văn bản. Ở chế độ này, chúng tôi nhận được chuỗi khi đọc từ tệp
Mặt khác, chế độ nhị phân trả về byte và đây là chế độ được sử dụng khi xử lý các tệp không phải văn bản như hình ảnh hoặc tệp thực thi
Chế độ Mô tả
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
3Mở tệp để đọc. [mặc định]f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
4Mở tệp để ghi. Tạo một tệp mới nếu nó không tồn tại hoặc cắt bớt tệp nếu nó tồn tại. f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
8Mở tệp để tạo độc quyền. Nếu tệp đã tồn tại, thao tác không thành công. f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
5Mở tệp để nối thêm vào cuối tệp mà không cắt bớt tệp. Tạo một tập tin mới nếu nó không tồn tại. names = open["names.txt", "r"] for line in names: print[names]60Mở ở chế độ văn bản. [mặc định]
names = open["names.txt", "r"] for line in names: print[names]61Mở ở chế độ nhị phân.
names = open["names.txt", "r"] for line in names: print[names]62Mở tệp để cập nhật [đọc và viết]
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
Không giống như các ngôn ngữ khác, ký tự
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
5 không ám chỉ số 97 cho đến khi nó được mã hóa bằng cách sử dụng names = open["names.txt", "r"] for line in names: print[names]64 [hoặc các mã hóa tương đương khác]
Hơn nữa, mã hóa mặc định phụ thuộc vào nền tảng. Trong windows, nó là
names = open["names.txt", "r"] for line in names: print[names]65 nhưng trong Linux là
names = open["names.txt", "r"] for line in names: print[names]66
Vì vậy, chúng tôi cũng không được dựa vào mã hóa mặc định, nếu không, mã của chúng tôi sẽ hoạt động khác trong các nền tảng khác nhau
Do đó, khi làm việc với các tệp ở chế độ văn bản, bạn nên chỉ định loại mã hóa
names = open["names.txt", "r"] for line in names: print[names]6
Đóng tệp bằng Python
Khi chúng tôi thực hiện xong các thao tác trên tệp, chúng tôi cần đóng tệp đúng cách
Đóng tệp sẽ giải phóng các tài nguyên được liên kết với tệp. Nó được thực hiện bằng cách sử dụng phương thức
names = open["names.txt", "r"] for line in names: print[names]67 có sẵn trong Python
Python có bộ thu gom rác để dọn sạch các đối tượng không được ước tính nhưng chúng ta không được dựa vào nó để đóng tệp
names = open["names.txt", "r"] for line in names: print[names]6
Phương pháp này không hoàn toàn an toàn. Nếu một ngoại lệ xảy ra khi chúng tôi đang thực hiện một số thao tác với tệp, mã sẽ thoát mà không đóng tệp
Một cách an toàn hơn là sử dụng try. cuối cùng chặn
names = open["names.txt", "r"] for line in names: print[names]7
Bằng cách này, chúng tôi đảm bảo rằng tệp được đóng đúng cách ngay cả khi một ngoại lệ được đưa ra khiến dòng chương trình dừng lại
Cách tốt nhất để đóng tệp là sử dụng câu lệnh
names = open["names.txt", "r"] for line in names: print[names]68. Điều này đảm bảo rằng tệp được đóng khi khối bên trong câu lệnh
names = open["names.txt", "r"] for line in names: print[names]68 được thoát
Chúng ta không cần gọi phương thức
names = open["names.txt", "r"] for line in names: print[names]67 một cách rõ ràng. Nó được thực hiện trong nội bộ
names = open["names.txt", "r"] for line in names: print[names]1
Ghi vào tệp bằng Python
Để ghi vào một tệp bằng Python, chúng ta cần mở nó ở chế độ ghi
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
4, nối thêm f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
5 hoặc chế độ tạo độc quyền f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
8Chúng ta cần cẩn thận với chế độ
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
4, vì nó sẽ ghi đè lên tệp nếu nó đã tồn tại. Do đó, tất cả dữ liệu trước đó sẽ bị xóaViết một chuỗi hoặc chuỗi byte [đối với tệp nhị phân] được thực hiện bằng phương pháp
names = open["names.txt", "r"] for line in names: print[names]65. Phương thức này trả về số ký tự được ghi vào tệp
names = open["names.txt", "r"] for line in names: print[names]7
Chương trình này sẽ tạo một tệp mới có tên là
names = open["names.txt", "r"] for line in names: print[names]66 trong thư mục hiện tại nếu nó không tồn tại. Nếu nó tồn tại, nó sẽ bị ghi đè
Chúng ta phải bao gồm các ký tự dòng mới để phân biệt các dòng khác nhau
Đọc tệp bằng Python
Để đọc một tệp bằng Python, chúng ta phải mở tệp ở chế độ đọc
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
3Có nhiều phương pháp có sẵn cho mục đích này. Chúng ta có thể sử dụng phương pháp
names = open["names.txt", "r"] for line in names: print[names]68 để đọc kích thước của dữ liệu. Nếu tham số kích thước không được chỉ định, nó sẽ đọc và trả về đến cuối tệp
Chúng ta có thể đọc tệp
names = open["names.txt", "r"] for line in names: print[names]69 mà chúng ta đã viết ở phần trên theo cách sau
names = open["names.txt", "r"] for line in names: print[line]2
Chúng ta có thể thấy rằng phương thức
names = open["names.txt", "r"] for line in names: print[names]70 trả về một dòng mới là
names = open["names.txt", "r"] for line in names: print[names]71. Khi đến cuối tệp, chúng tôi nhận được một chuỗi trống khi đọc thêm
Chúng ta có thể thay đổi [vị trí] con trỏ tệp hiện tại bằng cách sử dụng phương pháp
names = open["names.txt", "r"] for line in names: print[names]72. Tương tự, phương thức
names = open["names.txt", "r"] for line in names: print[names]73 trả về vị trí hiện tại của chúng ta [tính theo số byte]
names = open["names.txt", "r"] for line in names: print[line]7
Chúng ta có thể đọc từng dòng một tệp bằng cách sử dụng vòng lặp for. Cái này vừa hiệu quả vừa nhanh
names = open["names.txt", "r"] for line in names: print[line]8
Trong chương trình này, bản thân các dòng trong tệp bao gồm một ký tự xuống dòng
names = open["names.txt", "r"] for line in names: print[names]74. Vì vậy, chúng tôi sử dụng tham số kết thúc của hàm
names = open["names.txt", "r"] for line in names: print[names]75 để tránh hai dòng mới khi in
Ngoài ra, chúng ta có thể sử dụng phương pháp
names = open["names.txt", "r"] for line in names: print[names]76 để đọc các dòng riêng lẻ của tệp. Phương pháp này đọc một tệp cho đến dòng mới, bao gồm cả ký tự dòng mới
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
0Cuối cùng, phương thức
names = open["names.txt", "r"] for line in names: print[names]77 trả về danh sách các dòng còn lại của toàn bộ tệp. Tất cả các phương thức đọc này đều trả về các giá trị trống khi đến cuối tệp [EOF]
f = open["test.txt"] # equivalent to 'r' or 'rt'
f = open["test.txt",'w'] # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
1Phương thức tệp Python
Có nhiều phương thức khác nhau có sẵn với đối tượng tệp. Một số trong số chúng đã được sử dụng trong các ví dụ trên
Dưới đây là danh sách đầy đủ các phương thức trong chế độ văn bản với một mô tả ngắn gọn
MethodDescriptionclose[]Đóng một tập tin đã mở. Nó không có tác dụng nếu tệp đã được đóng. detach[] Tách bộ đệm nhị phân cơ bản khỏi
names = open["names.txt", "r"] for line in names: print[names]78 và trả về nó. fileno[] Trả về một số nguyên [mô tả tệp] của tệp. flush[] Xóa bộ đệm ghi của luồng tệp. isatty[] Trả về
names = open["names.txt", "r"] for line in names: print[names]79 nếu luồng tệp tương tác. read[n]Đọc tối đa n ký tự từ tệp. Đọc đến cuối tệp nếu nó âm hoặc
names = open["names.txt", "r"] for line in names: print[names]10. readable[] Trả về
names = open["names.txt", "r"] for line in names: print[names]79 nếu luồng tệp có thể được đọc từ. readline[n=-1]Đọc và trả về một dòng từ tệp. Đọc tối đa n byte nếu được chỉ định. readlines[n=-1]Đọc và trả về danh sách các dòng từ tệp. Đọc tối đa n byte/ký tự nếu được chỉ định. seek[offset,from=
names = open["names.txt", "r"] for line in names: print[names]12]Thay đổi vị trí tệp thành byte offset, liên quan đến from [bắt đầu, hiện tại, kết thúc]. seekable[] Trả về
names = open["names.txt", "r"] for line in names: print[names]79 nếu luồng tệp hỗ trợ truy cập ngẫu nhiên. Tell[] Trả về một số nguyên đại diện cho vị trí hiện tại của đối tượng tệp. truncate[size=
names = open["names.txt", "r"] for line in names: print[names]10]Thay đổi kích thước luồng tệp thành kích thước byte. Nếu kích thước không được chỉ định, hãy thay đổi kích thước thành vị trí hiện tại. writable[] Trả về
names = open["names.txt", "r"] for line in names: print[names]79 nếu luồng tệp có thể được ghi vào. write[s]Ghi chuỗi s vào tệp và trả về số ký tự đã ghi. writelines[lines] Ghi danh sách các dòng vào tệp