Hướng dẫn python split file into multiple files by lines - python tách tệp thành nhiều tệp theo dòng

Tôi làm điều này một cách dễ hiểu hơn và sử dụng các vết cắt ngắn hơn để cung cấp cho bạn sự hiểu biết thêm về cách thức và lý do tại sao điều này hoạt động. Câu trả lời trước đây hoạt động, nhưng nếu bạn không quen thuộc với các chức năng tích hợp nhất định, bạn sẽ không hiểu chức năng đang làm gì.

Bởi vì bạn không đăng mã, tôi đã quyết định làm theo cách này vì bạn có thể không quen thuộc với những thứ khác ngoài cú pháp Python cơ bản cho rằng cách bạn đặt ra câu hỏi khiến bạn không cố gắng như thế nào để tiếp cận câu hỏi

Dưới đây là các bước để làm điều này trong Python cơ bản:

Đầu tiên, bạn nên đọc tệp của mình vào danh sách để giữ an toàn:

my_file = 'really_big_file.txt'
hold_lines = []
with open(my_file,'r') as text_file:
    for row in text_file:
        hold_lines.append(row)

Thứ hai, bạn cần thiết lập một cách tạo các tệp mới theo tên! Tôi sẽ đề xuất một vòng lặp cùng với một vài bộ đếm:

outer_count = 1
line_count = 0
sorting = True
while sorting:
    count = 0
    increment = (outer_count-1) * 300
    left = len(hold_lines) - increment
    file_name = "small_file_" + str(outer_count * 300) + ".txt"

Thứ ba, bên trong vòng lặp đó, bạn cần một số vòng lặp lồng nhau sẽ lưu đúng các hàng vào một mảng:

hold_new_lines = []
    if left < 300:
        while count < left:
            hold_new_lines.append(hold_lines[line_count])
            count += 1
            line_count += 1
        sorting = False
    else:
        while count < 300:
            hold_new_lines.append(hold_lines[line_count])
            count += 1
            line_count += 1

Điều cuối cùng, một lần nữa trong vòng lặp đầu tiên của bạn, bạn cần viết tệp mới và thêm bộ truy cập cuối cùng của bạn để vòng lặp của bạn sẽ đi qua lại và viết một tệp mới

outer_count += 1
with open(file_name,'w') as next_file:
    for row in hold_new_lines:
        next_file.write(row)

Lưu ý: Nếu số lượng dòng không chia hết cho 300, tệp cuối cùng sẽ có tên không tương ứng với dòng tệp cuối cùng.

Điều quan trọng là phải hiểu tại sao các vòng lặp này hoạt động. Bạn có nó được đặt sao cho trên vòng lặp tiếp theo, tên của tệp mà bạn viết thay đổi vì bạn có tên phụ thuộc vào một biến thay đổi. Đây là một công cụ kịch bản rất hữu ích để truy cập tệp, mở, viết, tổ chức, v.v.

Trong trường hợp bạn không thể làm theo những gì trong vòng lặp, đây là toàn bộ chức năng:

my_file = 'really_big_file.txt'
sorting = True
hold_lines = []
with open(my_file,'r') as text_file:
    for row in text_file:
        hold_lines.append(row)
outer_count = 1
line_count = 0
while sorting:
    count = 0
    increment = (outer_count-1) * 300
    left = len(hold_lines) - increment
    file_name = "small_file_" + str(outer_count * 300) + ".txt"
    hold_new_lines = []
    if left < 300:
        while count < left:
            hold_new_lines.append(hold_lines[line_count])
            count += 1
            line_count += 1
        sorting = False
    else:
        while count < 300:
            hold_new_lines.append(hold_lines[line_count])
            count += 1
            line_count += 1
    outer_count += 1
    with open(file_name,'w') as next_file:
        for row in hold_new_lines:
            next_file.write(row)

Python là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới. Một lý do cho sự phổ biến của nó là Python giúp bạn dễ dàng làm việc với dữ liệu.

Đọc dữ liệu từ tệp văn bản là một nhiệm vụ thường xuyên trong Python. Trong bài đăng này, chúng tôi sẽ xem xét cách nhanh nhất để đọc và chia một tệp văn bản bằng Python. Chia dữ liệu sẽ chuyển đổi văn bản thành một danh sách, giúp làm việc dễ dàng hơn.

Chúng tôi cũng sẽ bao gồm một số phương thức khác để chia các tệp văn bản trong Python và giải thích cách thức và khi nào các phương pháp này hữu ích.

Trong các ví dụ sau, chúng tôi sẽ thấy Python có thể giúp chúng tôi làm chủ dữ liệu văn bản như thế nào. Tận dụng lợi thế của Python, nhiều chức năng tích hợp sẽ đơn giản hóa các nhiệm vụ của chúng tôi.

Giới thiệu phương thức Split ()

Cách nhanh nhất để phân chia văn bản trong Python là với phương thức Split (). Đây là một phương pháp tích hợp hữu ích để tách một chuỗi thành các phần riêng lẻ của nó.split() method. This is a built-in method that is useful for separating a string into its individual parts.

Phương thức chia () sẽ trả về một danh sách các phần tử trong một chuỗi. Theo mặc định, Python sử dụng khoảng trắng để phân chia chuỗi, nhưng bạn có thể cung cấp một dấu phân cách và chỉ định (các) ký tự nào sẽ sử dụng thay thế.

Ví dụ: dấu phẩy (,) thường được sử dụng để phân tách dữ liệu chuỗi. Đây là trường hợp với các tệp giá trị phân tách dấu phẩy (CSV). Bất cứ điều gì bạn chọn làm dấu phân cách, Python sẽ sử dụng để phân chia chuỗi.

Tách tệp văn bản với phương thức chia ()

Trong ví dụ đầu tiên của chúng tôi, chúng tôi có một tệp văn bản của dữ liệu nhân viên, bao gồm tên của nhân viên, số điện thoại và nghề nghiệp của họ.

Chúng tôi cần phải viết một chương trình Python có thể đọc thông tin được tạo ngẫu nhiên này và chia dữ liệu thành danh sách.

Hướng dẫn python split file into multiple files by lines - python tách tệp thành nhiều tệp theo dòng

leadyee_data.txtlana Anderson 485-3094-88 Electricianelian Johnston 751-5845-87 Thiết kế nội thất -01 Nhà thiết kế nội thất
Lana Anderson 485-3094-88 Electrician
Elian Johnston 751-5845-87 Interior Designer
Henry Johnston 777-6561-52 Astronomer
Dale Johnston 248-1843-09 Journalist
Luke Owens 341-7471-63 Teacher
Amy Perry 494-3532-17 Electrician
Chloe Baker 588-7165-01 Interior Designer

Sau khi sử dụng một python với câu lệnh để mở tệp dữ liệu, chúng ta có thể lặp lại thông qua các nội dung của tệp với một vòng lặp. Khi dữ liệu được đọc, phương thức chia () được sử dụng để tách văn bản thành các từ.with statement to open the data file, we can iterate through the file’s contents with a for loop. Once the data is read, the split() method is used to separate the text into words.

Trong trường hợp của chúng tôi, văn bản được phân tách bằng khoảng trắng, đây là hành vi mặc định của phương thức chia ().

Ví dụ 1: Tách dữ liệu nhân viên với Python

with open("employee_data.txt",'r') as data_file:
    for line in data_file:
        data = line.split()
        print(data)

Đầu ra

['Lana', 'Anderson', '485-3094-88', 'Electrician']
['Elian', 'Johnston', '751-5845-87', 'Interior', 'Designer']
['Henry', 'Johnston', '777-6561-52', 'Astronomer']
['Dale', 'Johnston', '248-1843-09', 'Journalist']
['Luke', 'Owens', '341-7471-63', 'Teacher']
['Amy', 'Perry', '494-3532-17', 'Electrician']
['Chloe', 'Baker', '588-7165-01', 'Interior', 'Designer']

Chia dây với dấu phẩy

Chúng tôi cung cấp một phân tách tùy chọn cho phương thức chia () để chỉ định ký tự nào để phân chia chuỗi với. Phân đoạn mặc định là khoảng trắng.

Trong ví dụ tiếp theo, chúng tôi sẽ sử dụng dấu phẩy để phân chia dữ liệu điểm kiểm tra được đọc từ một tệp.

grades.txtJanet,100,50,69Thomas,99,76,100Kate,102,78,65
Janet,100,50,69
Thomas,99,76,100
Kate,102,78,65

Ví dụ 2: Tách điểm với dấu phẩy

with open("grades.txt",'r') as file:
    for line in file:
        grade_data = line.strip().split(',')
        print(grade_data)

Phương thức Dải () được sử dụng ở đây để loại bỏ ký tự mới (\ n) & nbsp; từ cuối dòng.strip() method is used here to remove the newline character (\n) from the end of the lines.

Đầu ra

['Janet', '100', '50', '69']
['Thomas', '99', '76', '100']
['Kate', '102', '78', '65']

Chia dây với dấu phẩy

Chúng tôi cung cấp một phân tách tùy chọn cho phương thức chia () để chỉ định ký tự nào để phân chia chuỗi với. Phân đoạn mặc định là khoảng trắng.splitlines() method is used to get a list of the lines in a text file. For the next examples, we’ll pretend we run a website that’s dedicated to a theatre company. We’re reading script data from text files and pushing it to the company’s website.

Trong ví dụ tiếp theo, chúng tôi sẽ sử dụng dấu phẩy để phân chia dữ liệu điểm kiểm tra được đọc từ một tệp.
O Romeo, Romeo, wherefore art thou Romeo?
Deny thy father and refuse thy name.
Or if thou wilt not, be but sworn my love
And I’ll no longer be a Capulet.

Chúng ta có thể đọc tệp và chia các dòng thành một danh sách với phương thức splutLines (). Sau đó, một vòng lặp cho vòng lặp có thể được sử dụng để in nội dung của dữ liệu văn bản.

Ví dụ 3: Sử dụng splutlines () để đọc tệp văn bản

with open("juliet.txt",'r') as script:
    speech = script.read().splitlines()

for line in speech:
    print(line)

Trong Python, một máy phát là một thói quen đặc biệt có thể được sử dụng để tạo ra một mảng. Một trình tạo tương tự như một hàm trả về một mảng, nhưng nó làm như vậy một phần tử tại một thời điểm.

Máy phát điện sử dụng từ khóa năng suất. Khi Python gặp phải một câu lệnh năng suất, nó sẽ lưu trữ trạng thái của hàm cho đến sau này, khi trình tạo được gọi lại.yield keyword. When Python encounters a yield statement, it stores the state of the function until later, when the generator is called again.

Trong ví dụ tiếp theo, chúng tôi sẽ sử dụng một máy phát điện để đọc sự khởi đầu của bài phát biểu nổi tiếng của Romeo, từ Shakespeare, Romeo và Juliet. Sử dụng từ khóa năng suất đảm bảo rằng trạng thái của chúng tôi trong khi vòng lặp được lưu trong mỗi lần lặp. Điều này có thể hữu ích khi làm việc với các tập tin lớn.

romeo.txtbut mềm mại, ánh sáng qua cửa sổ Yonder phá vỡ? Đó là phương Đông, và Juliet là mặt trời. công bằng hơn cô ấy.
But soft, what light through yonder window breaks?
It is the east, and Juliet is the sun.
Arise, fair sun, and kill the envious moon,
Who is already sick and pale with grief
That thou, her maid, art far more fair than she.

Ví dụ 4: Tách tệp văn bản với trình tạo

outer_count = 1
line_count = 0
sorting = True
while sorting:
    count = 0
    increment = (outer_count-1) * 300
    left = len(hold_lines) - increment
    file_name = "small_file_" + str(outer_count * 300) + ".txt"
0

Đọc dữ liệu tệp với danh sách hiểu

Sự hiểu biết danh sách Python cung cấp một giải pháp thanh lịch để làm việc với các danh sách. Chúng tôi có thể tận dụng cú pháp ngắn hơn để viết mã của chúng tôi với sự hiểu biết danh sách. & NBSP; Ngoài ra, các câu lệnh hiểu danh sách thường dễ đọc hơn.

Trong các ví dụ trước đây, chúng tôi đã phải sử dụng một vòng lặp để đọc các tệp văn bản. Chúng tôi có thể trao đổi vòng lặp cho một dòng mã duy nhất bằng cách sử dụng danh sách hiểu.

Danh sách Hiểu Syntax: my_list = [Biểu thức cho phần tử trong danh sách]
my_list = [expression for element in list]

Khi dữ liệu đã được lấy thông qua khả năng hiểu danh sách, chúng tôi sử dụng phương thức Split () để tách các dòng và thêm chúng vào danh sách mới.

Sử dụng cùng một tệp romeo.txt từ ví dụ trước, hãy để xem cách hiểu danh sách có thể cung cấp một cách tiếp cận thanh lịch hơn để chia tệp văn bản trong Python.

Ví dụ 5: Sử dụng danh sách hiểu để đọc dữ liệu tệp

outer_count = 1
line_count = 0
sorting = True
while sorting:
    count = 0
    increment = (outer_count-1) * 300
    left = len(hold_lines) - increment
    file_name = "small_file_" + str(outer_count * 300) + ".txt"
1

Chia tệp văn bản thành nhiều tệp nhỏ hơn

Điều gì sẽ xảy ra nếu chúng ta có một tệp lớn mà chúng ta muốn chia thành các tệp nhỏ hơn? Chúng tôi chia một tệp lớn bằng Python bằng cách sử dụng các vòng lặp và cắt.

Với việc cắt danh sách, chúng tôi nói với Python, chúng tôi muốn làm việc với một loạt các yếu tố cụ thể từ một danh sách nhất định. Điều này được thực hiện bằng cách cung cấp một điểm bắt đầu và điểm kết thúc cho lát cắt.

Trong Python, một danh sách có thể được cắt bằng cách sử dụng một đại tràng. Trong ví dụ sau, chúng tôi sẽ sử dụng việc cắt danh sách để chia tệp văn bản thành nhiều tệp nhỏ hơn.

Tách một tệp với việc cắt danh sách

Một danh sách có thể được chia bằng cách sử dụng cắt danh sách Python. Để làm như vậy, trước tiên chúng tôi đọc tệp bằng phương thức readlines (). Tiếp theo, nửa trên của tệp được ghi vào một tệp mới có tên romeo_a.txt. Chúng tôi sẽ sử dụng Danh sách cắt trong vòng này để viết nửa đầu của tệp gốc vào một tệp mới.readlines() method. Next, the top half of the file is written to a new file called romeo_A.txt. We’ll use list slicing within this for loop to write the first half of the original file to a new file.

Sử dụng một vòng thứ hai cho vòng lặp, chúng tôi sẽ viết phần còn lại của văn bản vào một tệp khác. Để thực hiện lát cắt, chúng tôi cần phương thức Len () để tìm tổng số dòng trong tệp gốc.len() method to find the total number of lines in the original file.

Cuối cùng, phương thức int () được sử dụng để chuyển đổi kết quả của phân chia thành giá trị nguyên.int() method is used to convert the result of the division to an integer value.

Ví dụ 6: Chia một tệp văn bản duy nhất thành nhiều tệp văn bản

outer_count = 1
line_count = 0
sorting = True
while sorting:
    count = 0
    increment = (outer_count-1) * 300
    left = len(hold_lines) - increment
    file_name = "small_file_" + str(outer_count * 300) + ".txt"
2

Chạy chương trình này trong cùng thư mục với romeo.txt sẽ tạo các tệp văn bản sau.

romeo_a.txtbut mềm mại, ánh sáng xuyên qua cửa sổ phá vỡ? Đó là phương Đông, và Juliet là mặt trời.
But soft, what light through yonder window breaks?
It is the east, and Juliet is the sun.

romeo_b.txtarise, mặt trời công bằng, và giết chết mặt trăng ghen tị, người đã bị bệnh và tái nhợt với đau buồn, người giúp việc của cô, nghệ thuật công bằng hơn cô.
Arise, fair sun, and kill the envious moon,
Who is already sick and pale with grief
That thou, her maid, art far more fair than she.

Bài viết liên quan

Chúng tôi đã thấy cách sử dụng phương thức Split () để phân chia tệp văn bản. Ngoài ra, các ví dụ của chúng tôi đã chỉ ra cách tách () được sử dụng song song với các trình tạo python và danh sách hiểu để đọc các tệp lớn một cách thanh lịch hơn.

Tận dụng lợi thế của Python, nhiều phương thức tích hợp, chẳng hạn như Split () và Readlines (), cho phép chúng tôi xử lý các tệp văn bản nhanh hơn. Sử dụng các công cụ này sẽ giúp chúng tôi tiết kiệm thời gian và công sức.

Nếu bạn nghiêm túc về việc làm chủ Python, thì đó là một ý tưởng tốt để đầu tư một chút thời gian vào việc học cách sử dụng các phương pháp này để chuẩn bị các giải pháp của riêng bạn.

Nếu bạn muốn tìm hiểu thêm về lập trình với Python, vui lòng truy cập các hướng dẫn sau đây từ Python cho người mới bắt đầu.

  • Cách bình luận Python có thể thực hiện hoặc phá vỡ chương trình của bạn
  • Turbo tính phí mã của bạn với sự hiểu biết danh sách Python

Khuyến nghị đào tạo Python

Khóa học: Python 3 cho người mới bắt đầu

Hơn 15 giờ nội dung video với hướng dẫn hướng dẫn cho người mới bắt đầu. Tìm hiểu làm thế nào để tạo các ứng dụng trong thế giới thực và làm chủ những điều cơ bản.