Đọc và ghi File trong Python

Đọc File trong Python

Để đọc một file trong Python, bạn có thể sử dụng hàm open() để mở file và sau đó đọc nội dung của file đó bằng cách sử dụng phương thức read(). Sau đây là cách đọc một file văn bản đơn giản trong Python:

# Mở file để đọc
with open('file.txt', 'r') as file:
    # Đọc nội dung của file
    content = file.read()

# In nội dung của file
print(content)

Ở đây, chúng ta đã sử dụng with statement để đảm bảo rằng file sẽ được đóng ngay sau khi hoàn thành việc đọc. Tham số thứ hai của hàm open()r để cho biết chúng ta muốn đọc file. Nếu bạn muốn ghi vào file thì bạn cần sử dụng w thay vì r. Cuối cùng, chúng ta sử dụng phương thức read() để đọc nội dung của file và gán nó cho biến content.

Ghi File trong Python

Để ghi nội dung vào một file trong Python, bạn cần mở file đó bằng hàm open() và sử dụng phương thức write() để ghi nội dung vào file đó. Nếu file chưa tồn tại, thì hàm open() sẽ tạo một file mới. Nếu file đã tồn tại, thì hàm open() sẽ mở file đó và ghi đè lên nội dung cũ (nếu có). Sau đây là cách ghi nội dung vào một file văn bản đơn giản trong Python:

# Mở file để ghi
with open('file.txt', 'w') as file:
    # Ghi nội dung vào file
    file.write('Hello, world!')

# Đọc nội dung của file để kiểm tra
with open('file.txt', 'r') as file:
    content = file.read()
    print(content)

Ở đây, chúng ta đã sử dụng with statement để đảm bảo rằng file sẽ được đóng ngay sau khi hoàn thành việc ghi. Tham số thứ hai của hàm open() là w để cho biết chúng ta muốn ghi vào file. Nếu bạn muốn chỉ thêm nội dung vào cuối file thì bạn có thể sử dụng a thay vì w. Cuối cùng, chúng ta sử dụng phương thức write() để ghi nội dung vào file.

Đọc và Ghi File trong Python

Dưới đây là một ví dụ về cách đọc và ghi nội dung của một file trong Python. Trong ví dụ này, chúng ta sẽ đọc nội dung của một file, tạo một file mới và ghi nội dung đó vào file mới.

# Đọc nội dung của file
with open('input.txt', 'r') as input_file:
    content = input_file.read()
print('Nội dung của file input.txt là:', content)

# Tạo file mới và ghi nội dung vào file mới
with open('output.txt', 'w') as output_file:
    output_file.write(content)
print('Nội dung đã được ghi vào file output.txt')

Ở đây, chúng ta đầu tiên mở file input.txt để đọc nội dung bằng hàm open() và sử dụng phương thức read() để đọc nội dung của file. Sau đó, chúng ta in ra nội dung của file để kiểm tra. Tiếp theo, chúng ta mở một file mới output.txt để ghi nội dung bằng hàm open() và sử dụng phương thức write() để ghi nội dung của file input.txt vào file mới này. Cuối cùng, chúng ta in ra thông báo để xác nhận rằng nội dung đã được ghi vào file output.txt.

Ví dụ về đọc và ghi File trong Python

Dưới đây là một số ví dụ về cách đọc và ghi file trong Python:

Đọc và hiển thị nội dung của một file văn bản:

with open('filename.txt', 'r') as file:
    data = file.read()
print(data)

Đọc và hiển thị từng dòng của một file văn bản:

with open('filename.txt', 'r') as file:
    for line in file:
        print(line.strip())

Đọc và xử lý dữ liệu trong một file CSV:

with open('filename.txt', 'w') as file:
    file.write('Hello, world!')

Ghi dữ liệu vào một file CSV:

import csv

data = [
    ['Name', 'Age', 'Gender'],
    ['John', '25', 'Male'],
    ['Jane', '30', 'Female'],
    ['Bob', '35', 'Male']
]

with open('filename.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

Cách đọc từ file một dãy số (mỗi số cách nhau một dấu cách)

Bạn có thể đọc một dãy số từ một tệp văn bản trong Python bằng cách sử dụng hàm open() để mở tệp, sau đó sử dụng phương thức read() để đọc dữ liệu từ tệp vào một chuỗi. Sau đó, bạn có thể chuyển đổi chuỗi này thành một danh sách các số bằng cách sử dụng phương thức split() để tách các số trong chuỗi dựa trên khoảng trắng.

Ví dụ, giả sử bạn có một tệp văn bản có tên là “numbers.txt” chứa các số được liệt kê cách nhau bằng một dấu cách, bạn có thể đọc dãy số từ tệp này bằng cách sử dụng đoạn mã sau:

with open("numbers.txt", "r") as file:
    data = file.read().replace('\n', '')  # đọc dữ liệu từ tệp vào chuỗi
    numbers = data.split()  # tách các số trong chuỗi thành một danh sách
    numbers = [int(num) for num in numbers]  # chuyển đổi các chuỗi số thành số nguyên

print(numbers)  # in danh sách các số đã đọc được từ tệp

Trong đoạn mã trên, with open("numbers.txt", "r") as file sẽ mở tệp văn bản “numbers.txt” trong chế độ đọc ("r"), và sau khi hoàn thành đoạn mã bên trong khối with, Python sẽ tự động đóng tệp. file.read().replace('\n', '') đọc dữ liệu từ tệp vào một chuỗi, với replace('\n', '') để loại bỏ bất kỳ ký tự xuống dòng nào trong tệp. numbers = data.split() tách các số trong chuỗi thành một danh sách, với mặc định là dấu cách. Cuối cùng, với [int(num) for num in numbers], danh sách các chuỗi số được chuyển đổi thành danh sách các số nguyên.

Đọc từ 1 file nhiều dãy số mỗi dãy số là một dòng

Lưu ý: Trong các dãy số thì mỗi số cách nhau một dấu cách

Bạn có thể đọc từ một tệp chứa nhiều dãy số trong Python bằng cách sử dụng vòng lặp for để lặp qua từng dòng trong tệp. Với mỗi dòng, bạn có thể sử dụng phương thức split() để tách các số trong dòng dựa trên khoảng trắng, và sau đó chuyển đổi các chuỗi số thành số nguyên bằng cách sử dụng int().

Ví dụ, giả sử bạn có một tệp văn bản có tên là “numbers.txt” chứa nhiều dãy số, mỗi dãy số là một dòng và các số trong mỗi dãy số cách nhau bằng một dấu cách, bạn có thể đọc các dãy số này bằng cách sử dụng đoạn mã sau:

with open("numbers.txt", "r") as file:
    for line in file:
        numbers_str = line.strip().split()  # tách các số trong dòng thành một danh sách các chuỗi số
        numbers = [int(num) for num in numbers_str]  # chuyển đổi các chuỗi số thành số nguyên
        print(numbers)  # in danh sách các số trong dòng đã đọc được từ tệp

Ghi một dãy số vào một file Mỗi số cách nhau một dấu cách

Bạn có thể ghi một dãy số vào một tệp văn bản trong Python bằng cách sử dụng hàm write() của đối tượng file. Để ghi một dãy số vào tệp, bạn có thể truyền một chuỗi được tạo từ các số cách nhau bằng dấu cách vào phương thức write().

Ví dụ, giả sử bạn có một danh sách các số nguyên numbers và muốn ghi chúng vào một tệp có tên là “output.txt” trong đó mỗi số cách nhau bằng một dấu cách, bạn có thể sử dụng đoạn mã sau:

numbers = [1, 2, 3, 4, 5]
with open("output.txt", "w") as file:
    for num in numbers:
        file.write(str(num) + " ")  # ghi số và một khoảng trắng vào tệp

Trong đoạn mã trên, with open("output.txt", "w") as file sẽ mở tệp văn bản “output.txt” trong chế độ ghi ("w"), và sau khi hoàn thành đoạn mã bên trong khối with, Python sẽ tự động đóng tệp. Với for num in numbers:, chúng ta lặp qua từng số trong danh sách numbers. file.write(str(num) + " ") sẽ chuyển đổi số thành chuỗi bằng cách sử dụng hàm str() và ghi số đó cùng với một khoảng trắng vào tệp với phương thức write().

Ghi nhiều dãy số vào một file

Lưu ý: Ở đây, mỗi dòng một dãy số và trong các dãy số mỗi số cách nhau một dấu cách

Bạn có thể ghi nhiều dãy số vào một tệp văn bản trong Python bằng cách sử dụng vòng lặp for để lặp qua các dãy số và sử dụng phương thức write() để ghi các số trong mỗi dãy số cách nhau bằng dấu cách, và sử dụng phương thức write() với tham số là "\n" để xuống dòng và ghi các dãy số vào từng dòng riêng biệt.

Ví dụ, giả sử bạn có một danh sách các dãy số, trong đó mỗi dãy số là một danh sách các số nguyên sequences, và muốn ghi chúng vào một tệp có tên là “output.txt” trong đó mỗi dãy số nằm trên một dòng và các số trong mỗi dãy số cách nhau bằng một dấu cách, bạn có thể sử dụng đoạn mã sau:

sequences = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
with open("output.txt", "w") as file:
    for sequence in sequences:
        sequence_str = [str(num) for num in sequence]  # chuyển đổi các số thành chuỗi
        file.write(" ".join(sequence_str))  # ghi các số cách nhau bằng dấu cách
        file.write("\n")  # xuống dòng để ghi dãy số tiếp theo vào dòng mới

Trong đoạn mã trên, with open("output.txt", "w") as file sẽ mở tệp văn bản “output.txt” trong chế độ ghi ("w"), và sau khi hoàn thành đoạn mã bên trong khối with, Python sẽ tự động đóng tệp. Với for sequence in sequences:, chúng ta lặp qua từng dãy số trong danh sách sequences. sequence_str = [str(num) for num in sequence] chuyển đổi các số trong dãy số thành danh sách các chuỗi số. file.write(" ".join(sequence_str)) sẽ ghép các chuỗi số trong danh sách sequence_str lại với nhau bằng dấu cách và ghi chuỗi đó vào tệp với phương thức write(). Cuối cùng, với file.write("\n"), chúng ta xuống dòng để ghi dãy số tiếp theo vào dòng mới.

Giải một số bài tập về đọc và ghi File trong Python

Bài tập 1.Cặp giá trị theo thứ tự từ điển

Cho một chuỗi ký tự S, hãy viết chương trình đếm số lần xuất hiện của mỗi ký tự trong chuỗi và ghi kết quả vào file CHISO.OUT. Dữ liệu: Vào từ file văn bản CHISO.INP gồm một chuỗi ký tự S, độ dài của S không quá 1000. Kết quả: Ghi ra file văn bản CHISO.OUT các cặp giá trị (ký tự, số lần xuất hiện) theo thứ tự từ điển của các ký tự trong chuỗi S.

Để giải bài toán này, chúng ta có thể sử dụng một từ điển (dictionary) để lưu trữ số lần xuất hiện của từng ký tự trong chuỗi. Sau đó, chúng ta có thể lặp lại từng ký tự trong chuỗi và tăng giá trị tương ứng trong từ điển. Cuối cùng, chúng ta có thể ghi các cặp giá trị trong từ điển vào file CHISO.OUT.

# Đọc chuỗi S từ file CHISO.INP
with open('CHISO.INP', 'r') as f:
    s = f.read().strip()

# Tạo một từ điển để lưu trữ số lần xuất hiện của các ký tự
freq = {}

# Lặp lại từng ký tự trong chuỗi S
for c in s:
    # Tăng giá trị tương ứng trong từ điển
    freq[c] = freq.get(c, 0) + 1

# Ghi các cặp giá trị trong từ điển vào file CHISO.OUT
with open('CHISO.OUT', 'w') as f:
    for c in sorted(freq):
        f.write(f"{c} {freq[c]}\n")

Lưu ý rằng hàm freq.get(c, 0) được sử dụng để trả về giá trị tương ứng với khóa c trong từ điển freq, hoặc trả về giá trị mặc định là 0 nếu khóa c chưa tồn tại trong từ điển.

Bài tập 2. Cặp số nguyên (a, b) lớn nhất

Cho một danh sách các số nguyên không âm A, hãy tìm một cặp số (a, b) sao cho a + b lớn nhất và ghi kết quả vào file TONGMAX.OUT. Dữ liệu: Vào từ file văn bản TONGMAX.INP gồm một dòng đầu tiên chứa số nguyên n (2 ≤ n ≤ 1000) là số lượng phần tử trong danh sách và n số nguyên không âm A[1], A[2], …, A[n] (A[i] ≤ 1000). Kết quả: Ghi ra file văn bản TONGMAX.OUT một cặp số nguyên duy nhất (a, b) sao cho a + b lớn nhất.

Để giải bài toán này, ta có thể sử dụng thuật toán duyệt mảng để tìm hai phần tử có tổng lớn nhất.

Đầu tiên, ta đọc dữ liệu từ file TONGMAX.INP, lưu vào danh sách A. Sau đó, ta khởi tạo biến max_sum bằng 0 và hai biến a và b lần lượt bằng 0 và 1, tương ứng là chỉ số của hai phần tử trong danh sách A. Tiếp theo, ta duyệt mảng A và thực hiện các bước sau:

Với mỗi phần tử A[i] trong danh sách A, ta duyệt từ đầu đến chỉ số trước đó j, tìm phần tử A[j] sao cho tổng A[i] + A[j] lớn hơn max_sum. Nếu tìm được, ta cập nhật max_sum bằng tổng A[i] + A[j] và cập nhật a và b bằng i và j tương ứng.

Cuối cùng, ta ghi cặp số (a, b) vào file TONGMAX.OUT.

# Đọc dữ liệu từ file TONGMAX.INP
with open('TONGMAX.INP', 'r') as f:
    n = int(f.readline())
    A = list(map(int, f.readline().split()))

# Tìm cặp số (a, b) sao cho tổng lớn nhất
max_sum = 0
a, b = 0, 1
for i in range(n):
    for j in range(i):
        if A[i] + A[j] > max_sum:
            max_sum = A[i] + A[j]
            a, b = i, j

# Ghi kết quả vào file TONGMAX.OUT
with open('TONGMAX.OUT', 'w') as f:
    f.write('{} {}'.format(a+1, b+1))

Ở đây, ta cộng 1 vào a và b trước khi ghi kết quả vào file để chuyển từ chỉ số bắt đầu từ 0 sang chỉ số bắt đầu từ 1, giống với yêu cầu đề bài.

Bài tập 3. Số Fibonacci

Cho một số nguyên dương n, hãy tìm số Fibonacci thứ n và ghi kết quả vào file FIB.OUT. Dữ liệu: Vào từ file văn bản FIB.INP gồm một số nguyên dương n (1 ≤ n ≤ 1000). Kết quả: Ghi ra file văn bản FIB.OUT một số nguyên duy nhất là số Fibonacci thứ n.

def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)

# Đọc dữ liệu từ file
with open('FIB.INP', 'r') as f:
    n = int(f.readline())

# Tìm số Fibonacci thứ n
result = fibonacci(n)

# Ghi kết quả vào file
with open('FIB.OUT', 'w') as f:
    f.write(str(result))

Với đầu vào là FIB.INP chứa số nguyên dương n, chương trình sẽ đọc giá trị n, tính toán số Fibonacci thứ n và ghi kết quả vào file FIB.OUT.

Kết luận

Vấn đề đọc và ghi file là một chức năng quan trọng của Python, giúp cho việc lưu trữ và xử lý dữ liệu trở nên dễ dàng và tiện lợi hơn. Trong Python, chúng ta có các hàm có sẵn như open(), read(), write(), close() để thực hiện các tác vụ liên quan đến đọc và ghi file.

Các tập tin được lưu trữ trên đĩa cứng hoặc trong bộ nhớ tạm. Khi sử dụng Python để đọc và ghi file, cần chú ý đến việc đóng tập tin sau khi hoàn tất các tác vụ để tránh mất dữ liệu hoặc tài nguyên.

Ngoài ra, cần chú ý đến việc kiểm tra tính hợp lệ của dữ liệu đầu vào trước khi xử lý để tránh các lỗi không mong muốn.

Tổng quan về vấn đề đọc và ghi file trong Python là khá đầy đủ và tiện ích, giúp cho việc xử lý dữ liệu dễ dàng và tiết kiệm thời gian. Tuy nhiên, cần phải chú ý đến các điều kiện đầu vào và đóng tập tin đúng cách để đảm bảo tính ổn định và bảo mật của chương trình.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *