Hướng dẫn python read file while loop - python đọc tệp trong vòng lặp

Giới thiệu¶

Cho đến nay, tất cả các dữ liệu trong các chương trình của chúng tôi đã được mã hóa cứng vào chính chương trình hoặc nếu không nó đến từ người dùng đã nhập nó vào bàn phím. Điều này khá hạn chế và khá rõ ràng rằng chúng tôi sẽ muốn các chương trình có thể đọc dữ liệu từ các tệp.

Trong bài học này, chúng ta sẽ nói về những gì chúng ta có thể làm với các tệp văn bản. Các tệp văn bản là các tệp sử dụng một trong một số sơ đồ mã hóa tiêu chuẩn trong đó tệp có thể được giải thích là ký tự có thể in. Sau đó, chúng ta có thể tìm hiểu về các tệp nhị phân nơi chúng ta không thể xem tệp là ký tự nhưng đối với hầu hết các mục đích của chúng ta, chúng ta có thể giả sử chúng ta có văn bản.

Mở một tập tin

Đầu tiên chúng tôi sẽ cần một chuỗi để chỉ định tên của tệp của chúng tôi.

Chúng tôi có thể có một biến cho điều này và có thể:

  • Nói theo nghĩa đen, nếu chương trình của bạn luôn luôn sử dụng cùng tên.
  • Đọc nó từ người dùng sử dụng
    myfile = open('story.txt', 'r')
    s = myfile.readline()   # Read a line into s.
    print(s)
    s                       # Notice the \n that you only see when you look
                            # at the contents of the variable.
    
    4 và lưu nó trong một biến

Lưu ý: Tránh sử dụng 'tệp' làm tên biến, vì nó là một loại.

Tiếp theo, chúng tôi sử dụng lệnh

myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
5 và tên của tệp

In [1]:

f = open('story.txt', 'r')
f

Out[1]:

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>

Điều này mở tệp có tên

myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
6 từ thư mục hiện tại. Nó được mở để đọc (đó là chế độ
myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
7) và loại đối tượng là
myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
8. Đừng căng thẳng về loại này. Chỉ cần nghĩ về nó như một tập tin mở. Ý tưởng khái niệm quan trọng ở đây là đối tượng này không chỉ biết nội dung của tệp, mà còn biết vị trí hiện tại của chúng tôi trong tệp. Vì vậy, một khi chúng ta bắt đầu đọc, nó biết chúng ta đã đọc bao nhiêu và có thể tiếp tục cho chúng ta phần tiếp theo.much we've read and is able to keep giving us the next piece.

Đọc từ một tập tin

Có một số cách khác để đọc từ một tập tin.

  1. Đọc một dòng duy nhất

In [3]:

myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.

Out[3]:

'Mary had a little lamb\n'

Nhân vật

myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
9 (Backslash N) là một ký tự duy nhất đại diện cho một dòng mới.

In [3]:

 s = myfile.readline()   # The next call continues where we left off.
 print(s)    
 s = myfile.readline()   # And so on...
 print(s)   
 myfile.close()

His fleece was white as snow,

and everywhere that Mary went

Tôi có thể sử dụng điều này để đọc toàn bộ tệp, từng chút một, dưới sự kiểm soát của tôi.

  1. Đọc một số ký tự nhất định

In [4]:

filename = 'story.txt'
myfile = open(filename)
s = myfile.read(10)   # Read 10 characters into s.
print(s)
s = myfile.read(10)   # Read the next 10 characters into s.
print(s)
myfile.close()

Tôi cũng có thể sử dụng điều này để đọc toàn bộ tệp, từng chút một, dưới sự kiểm soát của tôi.

  1. Đọc một dòng tại một thời điểm từ đầu đến cuối

Nếu tôi biết tôi muốn đọc từng dòng cho đến cuối, một vòng lặp

'Mary had a little lamb\n'
0 giúp điều này dễ dàng. Đây có lẽ là cách phổ biến nhất để đọc một tập tin. Sử dụng điều này trừ khi bạn có một lý do không.

In [5]:

f = open('story.txt')
for line in f:
    print(line)     # Or do whatever you wish to line

myfile.close()     # Good habit: close a file when you are done with it.

Mary had a little lamb.

His fleece was white as snow,

and everywhere that Mary went

the lamb was sure to go.

Câu hỏi: Tại sao đầu ra từ vòng lặp cho vòng đôi? Trả lời:

'Mary had a little lamb\n'
1 cung cấp cho bạn một
myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
9 và có một ở cuối mỗi dòng.

Câu hỏi: Làm thế nào bạn có thể một không gian đơn đầu ra?

Dải ký tự dòng mới từ cuối mỗi dòng trước khi bạn in.

In [7]:

f = open('story.txt')
for line in f:
    line = line.strip('\n')
    print(line)

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>
0

(4) Đọc mọi thứ trong tệp thành một chuỗi

In [8]:

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>
1

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>
2

Out[9]:

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>
3

(5) Sử dụng

'Mary had a little lamb\n'
3 để đọc tệp thành
'Mary had a little lamb\n'
4 của các dòng.

In [10]:

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>
4

Out[10]:

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>
5

Người mới bắt đầu thường làm một trong hai cách tiếp cận cuối cùng vì chúng có vẻ dễ dàng.

  • Câu hỏi: Nhược điểm của việc đọc tất cả cùng một lúc là gì?
  • Trả lời: Có khả năng có rất nhiều không gian!

Đừng sử dụng kỹ thuật này trừ khi bạn thực sự cần truy cập vào toàn bộ tệp cùng một lúc.

Thông thường, chúng ta có thể đọc một mảnh, đối phó với nó và ném nó ra.

Đối phó với sự kết thúc của một tập tin

Với cách tiếp cận vòng lặp

'Mary had a little lamb\n'
0, vòng lặp sẽ tự động dừng khi kết thúc tệp. Hoặc thậm chí không bao giờ lặp lại một lần nếu tệp trống!

Nhưng điều gì xảy ra nếu bạn ở cuối tệp khi bạn gọi

'Mary had a little lamb\n'
6 hoặc
'Mary had a little lamb\n'
7? Bạn nhận được chuỗi trống. Sau đó, bạn biết bạn có thể ngừng cố gắng đọc thêm.
You get the empty string. You then know you can stop trying to read more.

Thí dụ¶

In [11]:

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>
6

Mary had a little lamb.

His fleece was white as snow,

and everywhere that Mary went

the lamb was sure to go.

Trong khi Loops¶

Ví dụ này giới thiệu một loại vòng lặp mới - vòng lặp

'Mary had a little lamb\n'
8

Cấu trúc của một vòng lặp trong thời gian

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>
8

Những gì nó làm

<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>
9

Lưu ý quan trọng: Nếu điều kiện trở thành sai trong phần thân của vòng lặp, vòng lặp không dừng lại ở thời điểm đó. Lần duy nhất nó quyết định nên tiếp tục hay dừng là ở đầu vòng lặp trên mỗi lần lặp.

Một bài tập với các vòng lặp trong khi

Viết chức năng

'Mary had a little lamb\n'
9 yêu cầu người dùng nhập
 s = myfile.readline()   # The next call continues where we left off.
 print(s)    
 s = myfile.readline()   # And so on...
 print(s)   
 myfile.close()
0 hoặc
 s = myfile.readline()   # The next call continues where we left off.
 print(s)    
 s = myfile.readline()   # And so on...
 print(s)   
 myfile.close()
1 và tiếp tục lặp lại yêu cầu nhiều lần cho đến khi người dùng nhập một trong hai tùy chọn này.

Nếu bạn hoàn thành bài tập đó, hãy thay đổi chức năng của mình để nó chấp nhận bất kỳ biến thể trường hợp nào như 'có', 'có' hoặc thậm chí 'không' và sau đó trả về phiên bản viết thường của những gì người dùng cung cấp. Nhưng nếu người dùng nói 'NOPE' hoặc 'có thể', nó sẽ không quay lại và yêu cầu lại 'có' hoặc 'không'.

In [4]:

myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
0

myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
1

Tập thể dục khi đọc một tập tin

Tệp

 s = myfile.readline()   # The next call continues where we left off.
 print(s)    
 s = myfile.readline()   # And so on...
 print(s)   
 myfile.close()
2 chứa dữ liệu từ trạm thời tiết UTM vào tháng 1 năm 2006. Tải xuống từ trang web C4M vào máy địa phương của bạn và đưa nó vào cùng thư mục như nơi Pyzo đang lưu trữ các chương trình của bạn. Tìm ra nơi lưu trữ các tệp hoặc cách chỉ định các đường dẫn đến tệp của bạn là một nửa trận chiến!

  1. Mở nó ở Pyzo để xem nó trông như thế nào.

  2. Viết chương trình Python để mở tệp và chỉ đọc dòng đầu tiên

  3. Đọc dòng thứ hai (đây vẫn là một tiêu đề)

  4. Đọc dòng thứ ba vào một biến

     s = myfile.readline()   # The next call continues where we left off.
     print(s)    
     s = myfile.readline()   # And so on...
     print(s)   
     myfile.close()
    
    3.

  5. Loại dòng là gì?

  6. Gọi phương thức

     s = myfile.readline()   # The next call continues where we left off.
     print(s)    
     s = myfile.readline()   # And so on...
     print(s)   
     myfile.close()
    
    4 trực tuyến và lưu giá trị trả về. Loại được trả lại bằng phương pháp này là gì?

  7. Tra cứu phương pháp

     s = myfile.readline()   # The next call continues where we left off.
     print(s)    
     s = myfile.readline()   # And so on...
     print(s)   
     myfile.close()
    
    4 trong tài liệu Python 3.

In [13]:

myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
2

myfile = open('story.txt', 'r')
s = myfile.readline()   # Read a line into s.
print(s)
s                       # Notice the \n that you only see when you look
                        # at the contents of the variable.
3

Một số câu hỏi và bước cần làm:

  1. Loại kết quả là gì?
  2. Loại yếu tố của kết quả là gì?
  3. Nhiệt độ là yếu tố nào?

  4. Viết một chương trình mà:

    1. Mở tệp vào tháng 106.txt
    2. đọc trong tiêu đề và bỏ qua nó
    3. sử dụng một vòng lặp để đọc trong tất cả các dòng còn lại
    4. chỉ in ra một ngày và nhiệt độ từ mỗi dòng
  5. Chạy chương trình của bạn và đảm bảo nó hoạt động. Khi nó hoạt động, hãy hiển thị TA hoặc người hướng dẫn

  6. Now change your program so that it doesn't print any temperatures but it looks at each temperature and keeps the warmest temperature it has seen so far and the corresponding day and time. When the whole file has been read, print the day and time of the coldest reading in the file. Be careful. You want to convert the values to integers before you compare them. The string '11' < '2' but 11 > 2.

Làm cách nào để đọc một tệp cụ thể trong Python?

Để đọc các dòng cụ thể từ tệp văn bản, vui lòng làm theo các bước sau:..
Mở tệp ở chế độ đọc. Để mở một tệp PASS PASS PIDE và MODE MODE R đến hàm Open (). ....
Tạo một danh sách để lưu trữ số dòng. ....
Tạo một danh sách để lưu trữ các dòng. ....
Sử dụng cho vòng lặp với hàm Enumerate () để có được một dòng và số của nó. ....
Đọc tệp theo số dòng ..

Readline () làm gì trong Python?

Phương thức Python Readline () Phương thức read () Phương thức trả về một dòng từ tệp.Bạn cũng có thể chỉ định số lượng byte từ dòng để trả về, bằng cách sử dụng tham số kích thước.returns one line from the file. You can also specified how many bytes from the line to return, by using the size parameter.

Làm thế nào để bạn đọc một tập tin cho đến khi kết thúc trong Python?

Phương thức Readlines () là phương thức phổ biến nhất để đọc tất cả các dòng của tệp cùng một lúc.Phương thức này đọc tệp cho đến khi EOF (cuối tệp), có nghĩa là nó đọc từ dòng đầu tiên cho đến dòng cuối cùng.Khi bạn áp dụng phương thức này trên một tệp để đọc các dòng của nó, nó sẽ trả về một danh sách.readlines () method is the most popular method for reading all the lines of the file at once. This method reads the file until EOF (End of file), which means it reads from the first line until the last line. When you apply this method on a file to read its lines, it returns a list.

Làm cách nào để đọc một dòng tệp văn bản từng dòng trong Python?

Phương pháp 1: Đọc một dòng theo từng dòng bằng cách sử dụng readlines () readlines () được sử dụng để đọc tất cả các dòng trong một lần và sau đó trả về chúng dưới dạng mỗi dòng một phần tử chuỗi trong một danh sách.Hàm này có thể được sử dụng cho các tệp nhỏ, vì nó đọc toàn bộ nội dung tệp vào bộ nhớ, sau đó chia nó thành các dòng riêng biệt.using readlines() readlines() is used to read all the lines at a single go and then return them as each line a string element in a list. This function can be used for small files, as it reads the whole file content to the memory, then split it into separate lines.