Hướng dẫn python 2 doc - tài liệu trăn 2

Có một số cách để trình bày đầu ra của một chương trình; Dữ liệu có thể được in dưới dạng người có thể đọc được hoặc được ghi vào một tệp để sử dụng trong tương lai. Chương này sẽ thảo luận về một số khả năng.

7.1. Định dạng đầu ra fancierFancier Output Formatting¶

Cho đến nay, chúng tôi đã gặp hai cách viết các giá trị: câu lệnh biểu thức và câu lệnh

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
3. .

Thông thường, bạn sẽ muốn kiểm soát nhiều hơn đối với định dạng đầu ra của mình hơn là chỉ đơn giản là in các giá trị phân tách không gian. Có hai cách để định dạng đầu ra của bạn; Cách đầu tiên là tự xử lý chuỗi; Sử dụng các hoạt động cắt và nối chuỗi, bạn có thể tạo bất kỳ bố cục nào bạn có thể tưởng tượng. Các loại chuỗi có một số phương pháp thực hiện các hoạt động hữu ích cho các chuỗi đệm theo chiều rộng cột nhất định; Những điều này sẽ được thảo luận trong thời gian ngắn. Cách thứ hai là sử dụng phương pháp

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
6.

Mô -đun

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
7 chứa một lớp
>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
8 cung cấp một cách khác để thay thế các giá trị thành các chuỗi.

Tất nhiên, một câu hỏi vẫn còn: làm thế nào để bạn chuyển đổi giá trị thành chuỗi? May mắn thay, Python có cách chuyển đổi bất kỳ giá trị nào thành một chuỗi: chuyển nó sang các hàm

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
9 hoặc
>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"
0.

Hàm

>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"
0 có nghĩa là trả về các biểu diễn của các giá trị khá dễ đọc của con người, trong khi
>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
9 có nghĩa là tạo ra các biểu diễn có thể được trình thông dịch đọc (hoặc sẽ buộc
>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"
3 nếu không có cú pháp tương đương). Đối với các đối tượng không có một đại diện cụ thể cho tiêu dùng của con người,
>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"
0 sẽ trả về giá trị tương tự như
>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
9. Nhiều giá trị, chẳng hạn như số hoặc cấu trúc như danh sách và từ điển, có cùng một biểu diễn bằng cách sử dụng một trong hai hàm. Chuỗi và số điểm nổi, đặc biệt, có hai biểu diễn riêng biệt.

Vài ví dụ:

>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"
>>> str(1.0/7.0)
'0.142857142857'
>>> repr(1.0/7.0)
'0.14285714285714285'
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '...'
>>> print s
The value of x is 32.5, and y is 40000...
>>> # The repr() of a string adds string quotes and backslashes:
... hello = 'hello, world\n'
>>> hellos = repr(hello)
>>> print hellos
'hello, world\n'
>>> # The argument to repr() may be any Python object:
... repr((x, y, ('spam', 'eggs')))
"(32.5, 40000, ('spam', 'eggs'))"

Dưới đây là hai cách để viết một bảng hình vuông và hình khối:

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

.

Ví dụ này cho thấy phương thức

>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"
7 của các đối tượng chuỗi, bên phải cảm ứng một chuỗi trong một trường có chiều rộng nhất định bằng cách đệm nó với các khoảng cách bên trái. Có các phương pháp tương tự
>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"
8 và
>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"
9. Các phương thức này không viết bất cứ điều gì, chúng chỉ trả lại một chuỗi mới. Nếu chuỗi đầu vào quá dài, chúng không cắt nó, nhưng trả lại nó không thay đổi; Điều này sẽ làm rối tung ra cột của bạn nhưng điều đó thường tốt hơn so với giải pháp thay thế, điều này sẽ nói dối về một giá trị. (Nếu bạn thực sự muốn cắt ngắn, bạn luôn có thể thêm một thao tác lát cắt, như trong
>>> print '{0} and {1}'.format('spam', 'eggs')
spam and eggs
>>> print '{1} and {0}'.format('spam', 'eggs')
eggs and spam
0.)

Có một phương pháp khác,

>>> print '{0} and {1}'.format('spam', 'eggs')
spam and eggs
>>> print '{1} and {0}'.format('spam', 'eggs')
eggs and spam
1, trong đó đệm một chuỗi số ở bên trái với số không. Nó hiểu về các dấu hiệu cộng và trừ:

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'

Việc sử dụng cơ bản của phương pháp

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
6 trông như thế này:

>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"

Các dấu ngoặc và ký tự trong chúng (được gọi là trường định dạng) được thay thế bằng các đối tượng được truyền vào phương thức

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
6. Một số trong giá đỡ đề cập đến vị trí của đối tượng được chuyển vào phương thức
>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
6.

>>> print '{0} and {1}'.format('spam', 'eggs')
spam and eggs
>>> print '{1} and {0}'.format('spam', 'eggs')
eggs and spam

Nếu các đối số từ khóa được sử dụng trong phương thức

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
6, các giá trị của chúng được đề cập bằng cách sử dụng tên của đối số.

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.

Đối số vị trí và từ khóa có thể được kết hợp một cách tùy ý:

>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.

>>> print '{0} and {1}'.format('spam', 'eggs')
spam and eggs
>>> print '{1} and {0}'.format('spam', 'eggs')
eggs and spam
6 (áp dụng
>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"
0) và
>>> print '{0} and {1}'.format('spam', 'eggs')
spam and eggs
>>> print '{1} and {0}'.format('spam', 'eggs')
eggs and spam
8 (áp dụng
>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
9) có thể được sử dụng để chuyển đổi giá trị trước khi nó được định dạng.

>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.

Một

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
0 và định dạng định dạng tùy chọn có thể theo tên trường. Điều này cho phép kiểm soát nhiều hơn về cách giá trị được định dạng. Các ví dụ sau đây làm tròn Pi đến ba vị trí sau thập phân.

>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.

Vượt qua một số nguyên sau

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
0 sẽ khiến trường đó có số lượng ký tự tối thiểu. Điều này rất hữu ích để làm cho các bảng đẹp.

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127

Nếu bạn có một chuỗi định dạng thực sự dài mà bạn không muốn chia tách, sẽ thật tuyệt nếu bạn có thể tham khảo các biến được định dạng theo tên thay vì theo vị trí. Điều này có thể được thực hiện bằng cách đơn giản là vượt qua Dict và sử dụng dấu ngoặc vuông

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
2 để truy cập các phím

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
0

Điều này cũng có thể được thực hiện bằng cách truyền bảng dưới dạng đối số từ khóa với ký hiệu ‘**.

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
1

Điều này đặc biệt hữu ích khi kết hợp với hàm tích hợp

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
3, trả về một từ điển chứa tất cả các biến cục bộ.

Để biết tổng quan đầy đủ về định dạng chuỗi với

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
6, hãy xem Cú pháp Chuỗi định dạng.Format String Syntax.

7.1.1. Định dạng chuỗi cũOld string formatting¶

Toán tử

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
5 cũng có thể được sử dụng để định dạng chuỗi. Nó diễn giải đối số bên trái giống như chuỗi định dạng kiểu ____ 56 được áp dụng cho đối số bên phải và trả về chuỗi do hoạt động định dạng này. Ví dụ:

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
2

Thêm thông tin có thể được tìm thấy trong phần Hoạt động định dạng chuỗi.String Formatting Operations section.

7.2. Đọc và viết các tập tinReading and Writing Files¶

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
7 Trả về một đối tượng tệp và được sử dụng phổ biến nhất với hai đối số:
>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
8.

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
3

Đối số đầu tiên là một chuỗi chứa tên tệp. Đối số thứ hai là một chuỗi khác chứa một vài ký tự mô tả cách sử dụng tệp. Chế độ có thể là

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
9 khi tệp sẽ chỉ được đọc,
>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
0 chỉ để viết (một tệp hiện có có cùng tên sẽ bị xóa) và
>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
1 mở tệp để thêm; Bất kỳ dữ liệu nào được ghi vào tệp được tự động thêm vào cuối.
>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
2 mở tệp cho cả đọc và viết. Đối số chế độ là tùy chọn;
>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.
9 sẽ được giả định nếu nó bị bỏ qua.

Trên Windows,

>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
4 được thêm vào chế độ sẽ mở tệp ở chế độ nhị phân, do đó cũng có các chế độ như
>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
5,
>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
6 và
>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
7. Python trên Windows tạo ra sự khác biệt giữa các tệp văn bản và nhị phân; Các ký tự cuối dòng trong các tệp văn bản được tự động thay đổi một chút khi dữ liệu được đọc hoặc viết. Việc sửa đổi hậu trường này đối với dữ liệu tệp là tốt cho các tệp văn bản ASCII, nhưng nó sẽ tham nhũng dữ liệu nhị phân như thế trong các tệp
>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
8 hoặc
>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
9. Hãy rất cẩn thận để sử dụng chế độ nhị phân khi đọc và viết các tệp đó. Trên Unix, nó không bị tổn thương khi nối
>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.
4 vào chế độ, vì vậy bạn có thể sử dụng nó độc lập với nền tảng cho tất cả các tệp nhị phân.

7.2.1. Phương thức của đối tượng tệpMethods of File Objects¶

Phần còn lại của các ví dụ trong phần này sẽ cho rằng một đối tượng tệp được gọi là

>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
1 đã được tạo.

Để đọc nội dung của tệp, hãy gọi

>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
2, đọc một số lượng dữ liệu và trả về nó dưới dạng chuỗi. Kích thước là một đối số số tùy chọn. Khi kích thước bị bỏ qua hoặc âm, toàn bộ nội dung của tệp sẽ được đọc và trả về; Đó là vấn đề của bạn nếu tệp lớn gấp đôi so với bộ nhớ máy của bạn. Nếu không, ở hầu hết các byte có kích thước được đọc và trả về. Nếu kết thúc của tệp đã đạt được,
>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
3 sẽ trả về một chuỗi trống (
>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
4).

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
4

>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
5 đọc một dòng duy nhất từ ​​tệp; Một ký tự dòng mới (
>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
6) bị bỏ lại ở cuối chuỗi và chỉ bị bỏ qua trên dòng cuối cùng của tệp nếu tệp không kết thúc trong một dòng mới. Điều này làm cho giá trị trả lại không rõ ràng; Nếu
>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
5 trả về một chuỗi trống, phần cuối của tệp đã đạt được, trong khi một dòng trống được biểu thị bằng
>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
8, một chuỗi chỉ chứa một dòng mới.

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
5

Để đọc các dòng từ một tệp, bạn có thể lặp qua đối tượng tệp. Đây là bộ nhớ hiệu quả, nhanh chóng và dẫn đến mã đơn giản:

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
6

Nếu bạn muốn đọc tất cả các dòng của một tệp trong danh sách, bạn cũng có thể sử dụng

>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
9 hoặc
>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.
0.

>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.
1 ghi nội dung của chuỗi vào tệp, trả về
>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.
2.

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
7

Để viết một cái gì đó không phải là một chuỗi, nó cần được chuyển đổi thành một chuỗi trước:

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
8

>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.
3 Trả về một số nguyên cung cấp cho đối tượng tệp vị trí hiện tại trong tệp, được đo bằng byte từ đầu tệp. Để thay đổi vị trí đối tượng tệp, hãy sử dụng
>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.
4. Vị trí được tính toán từ việc thêm bù vào một điểm tham chiếu; Điểm tham chiếu được chọn bởi đối số từ_what. Giá trị From_what của 0 biện pháp từ đầu tệp, 1 sử dụng vị trí tệp hiện tại và 2 sử dụng kết thúc của tệp làm điểm tham chiếu. From_What có thể được bỏ qua và mặc định là 0, sử dụng phần đầu của tệp làm điểm tham chiếu.

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
9

Khi bạn đã hoàn thành với một tệp, hãy gọi

>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.
5 để đóng nó và giải phóng bất kỳ tài nguyên hệ thống nào được thực hiện bởi tệp mở. Sau khi gọi
>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.
5, cố gắng sử dụng đối tượng tệp sẽ tự động bị lỗi.

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
0

Đó là thực tế tốt để sử dụng từ khóa

>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.
7 khi xử lý các đối tượng tệp. Điều này có lợi thế là tệp được đóng đúng sau khi bộ của nó kết thúc, ngay cả khi một ngoại lệ được nâng lên trên đường. Nó cũng ngắn hơn nhiều so với viết tương đương ____ 88 -________ 89 khối:

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
1

Các đối tượng tệp có một số phương thức bổ sung, chẳng hạn như

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
0 và
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
1 ít được sử dụng ít thường xuyên hơn; Tham khảo tài liệu tham khảo thư viện để biết hướng dẫn đầy đủ về các đối tượng tệp.

7.2.2. Lưu dữ liệu có cấu trúc với ________ 92¶Saving structured data with >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678} >>> for name, phone in table.items(): ... print '{0:10} ==> {1:10d}'.format(name, phone) ... Jack ==> 4098 Dcab ==> 7678 Sjoerd ==> 4127 2¶

Chuỗi có thể dễ dàng được ghi và đọc từ một tập tin. Các số cần thêm một chút nỗ lực, vì phương thức

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
3 chỉ trả về chuỗi, sẽ phải được chuyển đến một hàm như
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
4, có một chuỗi như
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
5 và trả về giá trị số của nó 123. Khi bạn muốn lưu các loại dữ liệu phức tạp hơn như Danh sách và từ điển lồng nhau, phân tích cú pháp và tuần tự bằng tay trở nên phức tạp.

Thay vì để người dùng liên tục viết và gỡ lỗi mã để lưu các loại dữ liệu phức tạp vào các tệp, Python cho phép bạn sử dụng định dạng trao đổi dữ liệu phổ biến có tên là JSON (ký hiệu đối tượng JavaScript). Mô -đun tiêu chuẩn được gọi là

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
2 có thể lấy hệ thống phân cấp dữ liệu Python và chuyển đổi chúng thành các biểu diễn chuỗi; Quá trình này được gọi là tuần tự hóa. Tái tạo dữ liệu từ biểu diễn chuỗi được gọi là khử Deserializing. Giữa tuần tự hóa và giải phóng hóa, chuỗi đại diện cho đối tượng có thể đã được lưu trữ trong một tệp hoặc dữ liệu hoặc gửi qua kết nối mạng đến một số máy xa.

Ghi chú

Định dạng JSON thường được sử dụng bởi các ứng dụng hiện đại để cho phép trao đổi dữ liệu. Nhiều lập trình viên đã quen thuộc với nó, điều này làm cho nó trở thành một lựa chọn tốt cho khả năng tương tác.

Nếu bạn có một đối tượng

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
7, bạn có thể xem biểu diễn chuỗi JSON của nó bằng một dòng mã đơn giản:

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
2

Một biến thể khác của hàm

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
8, được gọi là
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
9, chỉ đơn giản là tuần tự hóa đối tượng thành một tệp. Vì vậy, nếu
>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
1 là một đối tượng tệp được mở để viết, chúng ta có thể làm điều này:file object opened for writing, we can do this:

Để giải mã lại đối tượng, nếu

>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.
1 là đối tượng tệp đã được mở để đọc:file object which has been opened for reading:

Kỹ thuật tuần tự hóa đơn giản này có thể xử lý các danh sách và từ điển, nhưng tuần tự hóa các trường hợp lớp tùy ý trong JSON đòi hỏi một chút nỗ lực thêm. Tài liệu tham khảo cho mô -đun

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127
2 chứa một lời giải thích về điều này.

Xem thêm

>>> for x in range(1, 11):
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     # Note trailing comma on previous line
...     print repr(x*x*x).rjust(4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,11):
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
03 - Mô -đun Pickle

Trái ngược với JSON, Pickle là một giao thức cho phép tuần tự hóa các đối tượng Python phức tạp tùy ý.Như vậy, nó là cụ thể cho Python và không thể được sử dụng để giao tiếp với các ứng dụng được viết bằng các ngôn ngữ khác.Nó cũng không an toàn theo mặc định: Deserializing Dữ liệu đến từ một nguồn không đáng tin cậy có thể thực thi mã tùy ý, nếu dữ liệu được tạo ra bởi một kẻ tấn công lành nghề.JSON, pickle is a protocol which allows the serialization of arbitrarily complex Python objects. As such, it is specific to Python and cannot be used to communicate with applications written in other languages. It is also insecure by default: deserializing pickle data coming from an untrusted source can execute arbitrary code, if the data was crafted by a skilled attacker.