VI. Thao tác vào và ra:
1.Input
Python có 2 hàm được thiết kế để nhận dữ liệu trực tiếp từ người
sử dụng:
• input()
• raw_input()
raw_input()
raw_input() yêu cầu người sử dụng nhập vào
một chuỗi dữ liệu (kết thúc bằng một dòng mới), và đơn giản trả về một
chuỗi. Nó cũng có thể đưa ra một đối số để hiện thị như một
lời nhắc trước khi người sử dụng vào dữliệu. Ví dụ:
print raw_input('What
is your name?')
sẽ in ra:
What
is your name? <người sử dụng nhập dữ liệu ở đây>
input()
input()
sử dụng như raw_input để đọc một chuỗi dữ liệu và sau
đó thực hiện nó nếu đó là một chương trình Python, và trả về một giá
trị kết quả mà chương trình đó trả về and then returns the
value that results. Ví dụ vào:
[1,2,3]
Sẽ trả về một
danh sách chứa các số đó, nếu nó được đăng kí trực tiếp trong script đó.
Cũng có thể dùng nhiều biểu thức phức tạp, ví dụ, trong một script có:
x
= input('What are the first 10 perfect squares? ')
Người sử dụng có thể nhập:
map(lambda
x: x*x, range(10))
biểu thức nhập vào
đó sẽ được thực hiện và cho ra một câu trả lời chính xác dạng
danh sách. Chú ý rằng câu lệnh nhập vào đó chỉ được viết trên một
dòng.
input()
thường được sử dụng để nhập các chương trình nhỏ. Còn raw_input() thường
dùng trả về các chuỗi nhận được vào một kiểu dữ liệu
chưa xác định, giống như:
x
= None
while not
x:
try:
x = int(raw_input())
except ValueError:
print 'Invalid
Number'
nếu dùng input() cần
sử dụng thêm hàm eval() để xác định kiểu nhập vào.
File Input
Các đối tượng file
Python có các kiểu file
được cài sẵn. Các file có thể mở bằng cách sử dụng hàm xây dựng
kiểu file:
f = file('test.txt',
'r')
Điều này có nghĩa là
file f được mở để đọc. Đối số đầu tiên là tên file và đối số thứ 2
là chế độ mở file, bao gồm, ‘r’, ‘w’ hoặc ‘rw’
Cách phổ biến nhất
để đọc một file là lặp lại tuần tự cho đến hết file:
f = open('test.txt',
'r')
for line in f:
print line[0]
f.close()
Đoạn mã trên sẽ in
ra kí tự đầu tiên của mỗi dòng trong file. Cũng có thể đọc với số lượng
giới hạn các kí tự tại một thời điểm, giống như sau:
c = f.read(1)
while len(c) >
0:
if len(c.strip())
> 0: print c,
c = f.read(1)
Đoạn mã này sẽ lặp lại việc đọc một số kí tự từ file f, và
in ra chúng nếu chúng không phải là kí tự khoảng trắng
Một đối tượng file hoàn toàn chứa một dấu hiệu để mô tả vị trí
hiện thời của con trỏ file.
Con trỏ file sẽ di chuyển từ đầu file, có thể dùng phương
thức seek để dịch chuyển con trỏ file, ví dụ:
f.seek(0)
Các đối tượng file chuẩn:
Cũng
giống như trong nhiều ngôn ngữ khác, các đối tượng file chuẩn được
xây dựng sẵn để miêu tả vào, ra chuẩn và thông báo lỗi. Chúng nằm
trong module sys và được gọi là stdin, stdout và stderr. Cũng có những bản
sao của chúng trong __stdin__, __stdout__, và __stderr__. Được
dành cho IDLE và các công cụ khác khi các file chuẩn đã thay đổi
Để sử dụng các stdin, stdout, stderr điều khiển vào ra cần file import
module sys
Ví dụ đoạn mã sau sử dụng
trong Python giống như lệnh cat trong UNIX
import sys
for line in
sys.stdin:
print line,
Một
đối tượng cũng quan trọng là mảng sys.argv. Đây là một mảng mà chứa các đối
số dòng lệnh đến chương trình
python program.py hello there programmer!
Mảng
này cũng có chỉ số và các đối số được định giá trị. Trong
ví dụ trên, sys.argv[2] sẽ chứa xâu “there”, bởi vì tên của chương
trình (“program.py”) được lưu trong argv[0]. Việc xử lý các đối số dòng
lệnh có nhiều phức tạp hơn.
2. Output
Python
sử dụng cách thức cơ bản nhất để xuất dữ liệu là dùng câu lệnh
print.
print 'Hello,
world'
Để in ra nhiều thứ trên cùng một dòng, ta sử dụng dấu phẩy giữa
chúng, ví dụ:
print 'Hello,',
'World'
sẽ in ra như sau:
Hello, World
Chú ý rằng mặc dù xâu không chứa khoảng trống, nó cũng được thêm vào bởi lệnh
print bởi vì dấu , giữa 2 đối tượng. Các kiểu dữ liệu tùy ý có
thể được in theo cách này:
print 1,2,0xff,0777,(10+5j),-0.999,map,sys
sẽ in ra :
1 2 255 511 (10+5j)
-0.999 <built-in function map> <module 'sys' (built-in)>
Các đối tượng có thể in trên cùng một dòng không cần viết trên một dòng mà
chỉ cần đặt một dấu , ở cuối của lệnh print
for i in range(10):
print i,
sẽ in ra:
0 1 2 3 4 5 6 7 8 9
Để kết thúc một dòng, cần thêm vào một lệnh print mà không có đối tượng
nào, ví dụ:
for i in range(10):
print i,
print
for i in range(10,20):
print i,
sẽ in ra:
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
Nếu không có câu lệnh print trống thì nó sẽ in ra trên cùng một
dòng
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Nếu không muốn in một dòng mới hoặc một khoảng trống ( khi sử dụng
dấu , ở cuối), ta có thể làm một điều khiển ngắn với sys.stdout.write và
sử dụng để xuất ra:
import sys
write = sys.stdout.write
write('20')
write('05\n')
sẽ in ra:
2005
Những cú pháp như trên có thể sử dụng khi viết vào file thay vì
đến thiết bị ra chuẩn, ví dụ:
print >> f,
'Hello, world'
Cái này sẽ được in trong bất kì đối tượng nào mà thi hành hàm
write() trong đó có đối tượng file.
Hãy like nếu bài viết có ích →
Kết bạn với gisgpsrs trên Facebook
để nhận bài viết mới nóng hổi
Không có nhận xét nào:
Đăng nhận xét