You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 7.-input-and-output.md
+14-17Lines changed: 14 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,10 @@
1
1
# 7. Vào ra dữ liệu
2
2
3
-
Như chúng ta đã biết, có một vài cách để thể hiện đầu ra của một chương trình: in dữ liệu ra màn hình dưới dạng con người có thể đọc được, hoặc ghi dữ liệu ra file để cho những mục đích sử dụng sau này.Trong chương này, sẽ để cập đến một vài cách xuất dữ liệu đầu ra.
3
+
Như chúng ta đã biết, có một vài cách để thể hiện đầu ra của một chương trình: in dữ liệu ra màn hình dưới dạng con người có thể đọc được, hoặc ghi dữ liệu ra file để cho những mục đích sử dụng sau này.Trong chương này, sẽ để cập đến một vài cách xuất dữ liệu đầu ra.
4
4
5
5
### 7.1. Định dạng dữ liệu đầu ra thường dùng
6
6
7
-
Hiện nay, có 2 cách để ghi giá trị: _các câu lệnh biểu diễn_ và hàm [`print()`](https://docs.python.org/3/library/functions.html#print). \(Cách thứ 3 là sử dụng phương thức `write()` của đối tượng file; chuẩn file đầu ra có thể được tham chiếu tại `sys.stdout`. Xem trong thư viện để biết thêm thông tin về `sys.stdout`.\)
8
-
Thông thường, các lập trình viên muốn tùy chỉnh hiển thị dữ liệu theo mục đích của mình chứ không đơn giản là in ra giá trị với dấu cách. Vì vậy, Python cung cấp 2 cách để định dạng dữ liệu đầu ra: Cách 1, người lập trình tự xử lý chuỗi dùng các thao tác cắt chuỗi và nối chuỗi. Với kiểu chuỗi(string), python cung cấp phương thức hữu hiệu để căn chỉnh chuỗi dựa theo chiều rộng cột; chúng ta sẽ thảo luận ở phần sau về vấn đề này. Cách 2, sử dụng [Định dạng chuỗi ký tự](https://docs.python.org/3/reference/lexical_analysis.html#f-strings), hoặc hàm [`str.format()`](https://docs.python.org/3/library/stdtypes.html#str.format).
7
+
Hiện nay, có 2 cách để ghi giá trị: _các câu lệnh biểu diễn_ và hàm [`print()`](https://docs.python.org/3/library/functions.html#print). \(Cách thứ 3 là sử dụng phương thức `write()` của đối tượng file; chuẩn file đầu ra có thể được tham chiếu tại `sys.stdout`. Xem trong thư viện để biết thêm thông tin về `sys.stdout`\). Thông thường, các lập trình viên muốn tùy chỉnh hiển thị dữ liệu theo mục đích của mình chứ không đơn giản là in ra giá trị với dấu cách. Vì vậy, Python cung cấp 2 cách để định dạng dữ liệu đầu ra: Cách 1, người lập trình tự xử lý chuỗi dùng các thao tác cắt chuỗi và nối chuỗi. Với kiểu chuỗi(string), python cung cấp phương thức hữu hiệu để căn chỉnh chuỗi dựa theo chiều rộng cột; chúng ta sẽ thảo luận ở phần sau về vấn đề này. Cách 2, sử dụng [Định dạng chuỗi ký tự](https://docs.python.org/3/reference/lexical_analysis.html#f-strings), hoặc hàm [`str.format()`](https://docs.python.org/3/library/stdtypes.html#str.format).
9
8
10
9
Mô-đun [`string`](https://docs.python.org/3/library/string.html#module-string) bao gồm một lớp mẫu ([`Template`](https://docs.python.org/3/library/string.html#string.Template) class) thường có cách khác để chuyển đổi các giá trị thành chuỗi.
Để có một cái nhìn toàn diện về định dạng chuỗi với [`str.format()`](https://docs.python.org/3/library/stdtypes.html#str.format), hãy xem chi tiết tại [Format String Syntax](https://docs.python.org/3/library/string.html#formatstrings).
169
168
170
-
#### 7.1.1. Old string formatting
169
+
#### 7.1.1. Định dạng chuỗi truyền thống
171
170
172
-
The `%`operator can also be used for string formatting. It interprets the left argument much like a `sprintf()`-style format string to be applied to the right argument, and returns the string resulting from this formatting operation. For example:>>>
171
+
Toán tử `%`cũng được sử dụng trong định dạng chuỗi. Nó diễn giải đối số bên trái giống như hàm `sprintf()`(hàm `sprintf()`: là một kiểu định dạng chuỗi được áp dụng cho đối số phải, và trả về chuỗi kết quả từ toán tử định dạng này). Ví dụ:>>>
173
172
174
173
```text
175
174
>>> import math
176
175
>>> print('The value of PI is approximately %5.3f.' % math.pi)
177
176
The value of PI is approximately 3.142.
178
177
```
178
+
Để biết thêm thông tin, hãy xem ở [printf-style String Formatting](https://docs.python.org/3/library/stdtypes.html#old-string-formatting)
179
179
180
-
More information can be found in the [printf-style String Formatting](https://docs.python.org/3/library/stdtypes.html#old-string-formatting) section.
180
+
### 7.2. Đọc và ghi tệp (file)
181
181
182
-
### 7.2. Reading and Writing Files
183
-
184
-
[`open()`](https://docs.python.org/3/library/functions.html#open) returns a [file object](https://docs.python.org/3/glossary.html#term-file-object), and is most commonly used with two arguments: `open(filename, mode)`.>>>
182
+
Hàm [`open()`](https://docs.python.org/3/library/functions.html#open) trả về một đối tượng file([file object](https://docs.python.org/3/glossary.html#term-file-object), thông thường hàm này có 2 tham số: `open(filename, mode)`).>>>
185
183
186
184
```text
187
185
>>> f = open('workfile', 'w')
188
186
```
189
187
190
-
The first argument is a string containing the filename. The second argument is another string containing a few characters describing the way in which the file will be used. _mode_can be`'r'` when the file will only be read, `'w'`for only writing \(an existing file with the same name will be erased\), and `'a'`opens the file for appending; any data written to the file is automatically added to the end. `'r+'` opens the file for both reading and writing. The _mode_argument is optional; `'r'` will be assumed if it’s omitted.
188
+
Tham số đầu tiên của hàm `open()` là một chuỗi bao gồm tên file. Tham số thứ 2 là một chuỗi bao gồm một vài ký tự để miêu tả cách sử dụng của file đó, gọi là _mode_. Nếu _mode_là `'r'`, file đó chỉ được đọc. Nếu _mode_ là `'w'`, file đó chỉ được ghi \(Nếu tồn tại 1 file có cùng tên, file cùng tên đó sẽ bị xóa đi khi sử dụng _mode_ là `'w'`\). Nếu _mode_ là `'a'`mở file để ghi thêm vào, trong trường hợp này, bất kỳ dữ liệu nào được thêm vào sẽ được tự động ghi ở cuối file. Nếu _mode_ là `'r+'`, mở file để vừa ghi vừa đọc. Tham số _mode_là tùy chọn, trong trường hợp không khai báo _mode_, mặc định là `'r'`.
191
189
192
-
Normally, files are opened in_text mode_, that means, you read and write strings from and to the file, which are encoded in a specific encoding. If encoding is not specified, the default is platform dependent \(see [`open()`](https://docs.python.org/3/library/functions.html#open)\). `'b'`appended to the mode opens the file in _binary mode_: now the data is read and written in the form of bytes objects. This mode should be used for all files that don’t contain text.
190
+
Thông thường, tệp được mở ở_text mode_, có nghĩa là, đọc là ghi chuỗi từ 1 file sang 1 file khác, chuỗi đó được mã hóa bằng một dạng mã hóa cụ thể. Nếu mã hóa không được chỉ định, kiểu mã hóa mặc định cho chuỗi trên phụ thuộc vào nền tảng \(xem hàm [`open()`](https://docs.python.org/3/library/functions.html#open)\). Sử dụng _mode_ là `'b'` khi mở file binary, trong trường hợp này, dữ liệu được đọc ghi dưới dạng đối tượng byte. Mode này được sử dụng khi tất cả các file không bao gồm ký tự văn bản (text).
193
191
194
-
In text mode, the default when reading is to convert platform-specific line endings \(`\n`on Unix, `\r\n`on Windows\) to just `\n`. When writing in text mode, the default is to convert occurrences of `\n` back to platform-specific line endings. This behind-the-scenes modification to file data is fine for text files, but will corrupt binary data like that in`JPEG`or `EXE` files. Be very careful to use binary mode when reading and writing such files.
192
+
Ở chế độ văn bản (text mode), khi đọc file, `\n` mặc định được chuyển đổi phụ thuộc vào nền tảng cụ thể \(`\n`cho Unix, `\r\n`cho Windows\). Khi ghi file, `\n` mặc định được chuyển đổi trở lại phụ thuộc vào nền tảng. Việc chuyển đổi ngầm này rất có lợi đối với file văn bản, nhưng nó sẽ làm hỏng dữ liệu nhị phân giống như file`JPEG`hoặc file `EXE`. Vì vậy, hãy cẩn thận khi sử dụng chế độ nhị phân (binary mode) khi đọc và ghi file.
195
193
196
-
It is good practice to use the [`with`](https://docs.python.org/3/reference/compound_stmts.html#with)keyword when dealing with file objects. The advantage is that the file is properly closed after its suite finishes, even if an exception is raised at some point. Using [`with`](https://docs.python.org/3/reference/compound_stmts.html#with)is also much shorter than writing equivalent[`try`](https://docs.python.org/3/reference/compound_stmts.html#try)-[`finally`](https://docs.python.org/3/reference/compound_stmts.html#finally) blocks:>>>
194
+
Sử dụng từ khóa [`with`](https://docs.python.org/3/reference/compound_stmts.html#with)với đối tượng file. Ưu điểm là đóng file ngay sau khi kết thúc phiên làm việc, thậm chí các lỗi ngoại lệ (exception) có thể được chỉ ra khi sử dụng [`with`](https://docs.python.org/3/reference/compound_stmts.html#with). Thêm vào đó, sử dụng [`with`](https://docs.python.org/3/reference/compound_stmts.html#with)cũng ngắn gọn hơn với cách viết[`try`](https://docs.python.org/3/reference/compound_stmts.html#try)-[`finally`](https://docs.python.org/3/reference/compound_stmts.html#finally):>>>
197
195
198
196
```text
199
197
>>> with open('workfile') as f:
200
198
... read_data = f.read()
201
199
>>> f.closed
202
200
True
203
201
```
202
+
Nếu không sử dụng từ khóa [`with`](https://docs.python.org/3/reference/compound_stmts.html#with), phải gọi hàm `f.close()` để đóng file và giải phóng tài nguyên hệ thống đã được sử dụng. Nếu không đóng file, file này vẫn để mở cho tới khi trình thu gom rác (garbage collector) của Python hủy đối tượng và đóng file. Một rủi ro khác là, thời điểm dọn dẹp của trình thu gom rác phụ thuộc vào các phiên bản python khác nhau.
204
203
205
-
If you’re not using the [`with`](https://docs.python.org/3/reference/compound_stmts.html#with) keyword, then you should call `f.close()` to close the file and immediately free up any system resources used by it. If you don’t explicitly close a file, Python’s garbage collector will eventually destroy the object and close the open file for you, but the file may stay open for a while. Another risk is that different Python implementations will do this clean-up at different times.
206
-
207
-
After a file object is closed, either by a [`with`](https://docs.python.org/3/reference/compound_stmts.html#with) statement or by calling `f.close()`, attempts to use the file object will automatically fail.>>>
204
+
Lưu ý, một khi đối tượng file được đóng, khi sử dụng hoặc là câu lệnh [`with`](https://docs.python.org/3/reference/compound_stmts.html#with) hoặc là đã gọi hàm `f.close()`, sẽ không thể thao tác trên đối tượng file đó nữa.>>>
0 commit comments