Hướng dẫn writeline to file python - writeline vào tệp python

Nội dung chính ShowShow

  • Ghi file trong python
  • Ghi chuỗi vào file trong python | phương thức write()
  • Ghi chuỗi theo định dạng vào file trong python bằng phương thức write()
  • Ghi list vào file trong python | phương thức writelines()
  • Tạo file rỗng trong python | câu lệnh pass
  • Ghi file trong python với các mode trong hàm open()
  • Ghi đè file trong python | mode w
  • Ghi chèn file trong python | mode a
  • Tạo mới và ghi file trong python | mode x
  • Tổng kết

Hướng dẫn cách xử lý file trong Python. Bạn sẽ học được các cách ghi vào file trong python như ghi chèn file, ghi đè file, cách dùng các phương thức như write(), writelines() để ghi file, cũng như cách tạo file rỗng trong python sau bài học này.xử lý file trong Python. Bạn sẽ học được các cách ghi vào file trong python như ghi chèn file, ghi đè file, cách dùng các phương thức như write(), writelines() để ghi file, cũng như cách tạo file rỗng trong python sau bài học này.

Ghi file trong python

Để ghi file trong python, trước hết chúng ta cần mở file đó bằng hàm open() hoặc bằng câu lệnh with mà Kiyoshi đã hướng dẫn trong bài Mở và đóng file trong python, với một trong các mode sau đây:

ModeXử lýChức năng
w Mở để ghi đè Xoá nội dung cũ và ghi đè nội dung mớiNếu file không tồn tại thì tạo file mới
Nếu file không tồn tại thì tạo file mới
a Mở để ghi chèn Ghi chèn nội dung mới vào cuối fileNếu file không tồn tại thì tạo file mới
Nếu file không tồn tại thì tạo file mới
x Tạo mới và ghi file Nếu file đã tồn tại thì xảy ra lỗi
r+ Mở để đọc và ghi đè Cho phép cả đọc và ghi đèNếu file không tồn tại thì trả về lỗi
Nếu file không tồn tại thì trả về lỗi
w+ Mở để đọc và ghi đè Cho phép cả đọc và ghi đèNếu file không tồn tại thì trả về lỗi
Nếu file không tồn tại thì tạo file mới
w+ Cho phép cả đọc và ghi đèNếu file không tồn tại thì tạo file mới a+
Nếu file không tồn tại thì tạo file mới

Mở để đọc và ghi chèn

f = open('myfile.txt',"w")

with open('myfile2.txt',"a") as f:
print(type(f))

f = open('myfile.txt', 'r+', encoding='UTF-8')

Cho phép cả đọc và ghi chènNếu file không tồn tại thì tạo file mới

  • Ví dụ: : ghi chuỗi vào file
  • Sau khi mở file và thu về một object file, chúng ta có thể sử dụng các phương pháp sau để thao tác với object file và thực hiện ghi vào file trong python: : ghi chuỗi theo định dạng vào file
  • phương thức write() : ghi chuỗi vào file : ghi list vào file
  • phương thức write() kèm format : ghi chuỗi theo định dạng vào file : tạo một file trống

phương thức writelines() : ghi list vào file

Ghi chuỗi vào file trong python | phương thức write()

câu lệnh pass : tạo một file trống

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


7

Hãy cùng tìm hiểu lần lượt các nội dung trên ở phần sau đây.

Đúng như ý nghĩa tiếng anh của tên phương thức, write() được dùng để ghi chuỗi vào file trong python, với cú pháp sau đơn giản sau đây:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



Trong đó

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


8 là object file được tạo khi mở file bằng hàm open(),
path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


9 là chuỗi ký tự bạn muốn ghi đè vào file.

Lưu ý là phương thức write() không tự động chèn ký tự xuống dòng vào file, nên nếu bạn muốn ghi nhiều dòng vào file, hãy thêm ký tự xuống dòng

a = "Kiyoshi"
b = 30
c = "Tokyo"

with open('sample.txt',"w") as f:
f.write("{} {} {}\n".format(a,b,c))
f.write("{},{},{}\n".format(a,b))
f.write("name: {} age: {} address: {}\n".format(a,b))
0 vào trong chuỗi cần ghi như ví dụ sau:

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


Cần lưu ý là ký tự xuống dòng trong các hệ điều hành là khác nhau, ví dụ như trong macOS là

a = "Kiyoshi"
b = 30
c = "Tokyo"

with open('sample.txt',"w") as f:
f.write("{} {} {}\n".format(a,b,c))
f.write("{},{},{}\n".format(a,b))
f.write("name: {} age: {} address: {}\n".format(a,b))
1 còn trong Windows là
a = "Kiyoshi"
b = 30
c = "Tokyo"

with open('sample.txt',"w") as f:
f.write("{} {} {}\n".format(a,b,c))
f.write("{},{},{}\n".format(a,b))
f.write("name: {} age: {} address: {}\n".format(a,b))
2 chẳng hạn, tuy nhiên chỉ cần bạn chỉ định
a = "Kiyoshi"
b = 30
c = "Tokyo"

with open('sample.txt',"w") as f:
f.write("{} {} {}\n".format(a,b,c))
f.write("{},{},{}\n".format(a,b))
f.write("name: {} age: {} address: {}\n".format(a,b))
0 trong python thì chương trình sẽ tự động điều chỉnh ký tự xuống dòng cho phù hợp với OS mà bạn đang dùng.

Lại nữa, phương thức write() chỉ sử dụng để ghi chuỗi vào file trong python. Nếu chúng ta chỉ định một giá trị có kiểu dữ liệu khác kiểu chuỗi, ví dụ như là kiểu số chẳng hạn, lỗi sẽ bị trả về:

Ghi chuỗi theo định dạng vào file trong python bằng phương thức write()

Do đó, bạn cần phải chuyển kiểu dữ liệu về kiểu chuỗi trước khi có thể tiến hành ghi nội dung vào file.

Về cách chuyển số thành chuỗi, hãy xem chi tiết tại bài Chuyển số thành chuỗi trong python.

Đây là các ghi chuỗi vào file nâng cao bằng phương thức write(). Chúng ta thay đổi chuỗi cần ghi theo một định dạng chỉ định trước khi ghi nó vào trong file.

Và để định dạng chuỗi trước khi ghi vào file thì chúng ta cần sử dụng tới phương pháp định dạng chuỗi trong python bằng phương thức format mà Kiyoshi đã hướng dẫn trong bài Định dạng chuỗi trong python.

Cú pháp ghi chuỗi theo định dạng vào file trong python bằng phương thức write() sẽ như sau:

f.write(pattern. format ( value1 , value2 , value3 , …))

a = "Kiyoshi"
b = 30
c = "Tokyo"

with open('sample.txt',"w") as f:
f.write("{} {} {}\n".format(a,b,c))
f.write("{},{},{}\n".format(a,b))
f.write("name: {} age: {} address: {}\n".format(a,b))

Trong đó

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


8 là object file được tạo khi mở file bằng hàm open(),
a = "Kiyoshi"
b = 30
c = "Tokyo"

with open('sample.txt',"w") as f:
f.write("{} {} {}\n".format(a,b,c))
f.write("{},{},{}\n".format(a,b))
f.write("name: {} age: {} address: {}\n".format(a,b))
5 là các định dạng chuỗi chứa các trường thay thế (field) để gán giá trị (value) trong đối số của hàm format. Sau khi định dạng chuỗi xong thì chuỗi được định dạng sẽ được ghi vào trong object file.

Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo

Ghi list vào file trong python | phương thức writelines()

Ví dụ cụ thể:

a = "Kiyoshi"
b = 30
c = "Tokyo"

with open('sample.txt',"w") as f:
f.write("{} {} {}\n".format(a,b,c))
f.write("{},{},{}\n".format(a,b))
f.write("name: {} age: {} address: {}\n".format(a,b))
7

Khi đó, các chuỗi sẽ được định dạng theo định dạng chỉ định và ghi vào file

a = "Kiyoshi"
b = 30
c = "Tokyo"

with open('sample.txt',"w") as f:
f.write("{} {} {}\n".format(a,b,c))
f.write("{},{},{}\n".format(a,b))
f.write("name: {} age: {} address: {}\n".format(a,b))
6 như sau:
Giá trị của các phần tử trong list được chỉ định sẽ được lần lượt lấy ra và ghi đè vào file trong python.

Mở để đọc và ghi chèn

l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()

Cho phép cả đọc và ghi chènNếu file không tồn tại thì tạo file mới

l = ['One', 'Two', 'Three']

with open(path_w, mode='w') as f:
f.writelines(l)

with open(path_w) as f:
print(f.read())

Ví dụ:

OneTwoThree

Lưu ý là giống với phương thức write(), writeness() cũng không tự thêm ký tự xuống dòng khi ghi chuỗi, do đó bạn cần phải thêm ký tự xuống dòng vào giá trị của phần tử trong list khi cần thiết.

Ví dụ, bạn thêm ký tự xuống dòng khi khai báo list

l = ['One\n', 'Two\n', 'Three']

with open(path_w, mode='w') as f:
f.writelines(l)

Hoặc là thêm ký tự xuống dòng trước khi ghi vào file

l = ['One', 'Two', 'Three']

with open(path_w, mode='w') as f:
f.write('\n'.join(l))

Cả hai đều cho ra kết quả giống nhau:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



0

Ở ví dụ trên chúng ta có sử dụng tới phương thức join() để thêm ký tự xuống dòng

Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
0 vào trong list python. Bạn có thể tìm hiểu chi tiết hơn tại bài viết Phương thức Join() trong Python

Tạo file rỗng trong python | câu lệnh pass

Trong một số chương trình, tùy vào mục đích sử dụng mà chúng ta có thể tạo một file rỗng mà không tiến hành thêm xử lý nào luôn với file đó. File này có thể được sử dụng trong các phần khác của chương trình.

Khi đó chúng ta cần mở file bằng hàm open() với mode w, kèm với sử dụng lệnh pass như ví dụ sau đây:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



1

Lưu ý là nếu như folder nơi chứa file rỗng cần tạo không tồn tại, lỗi FileNotFoundError sẽ bị trả về:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



2

Ghi file trong python với các mode trong hàm open()

Ghi đè file trong python | mode w

Ở phần trên, chúng ta đã sử dụng mode w trong hàm open() để ghi đè file trong python.Mode w trong hàm open() được sử dụng với cú pháp sau:
Mode w trong hàm open() được sử dụng với cú pháp sau:

Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
1

Nếu file được chỉ định không tồn tại, một file mới sẽ được tạo ra. Nếu file đó đã tồn tại, nội dung cũ của file bị xóa trước khi được ghi đè nội dung mới lên.

Ví dụ chúng ta có file

Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
2 có nội dung là
Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
3 và muốn ghi đè nội dung mới là
Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
4:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



3

Bạn cũng có thể sử dụng với lệnh With như sau:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



4

Cả hai cách làm đều đưa ra cùng kết quả:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



5

Mặc dù nếu file không tồn tại một file mới sẽ được tạo ra, nhưng nếu ngay cả folder chứa file này cũng không tồn tại, lỗi FileNotFoundError sẽ bị trả về:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



6

Lại nữa, do phương pháp ghi đè file trong python bằng mode w sẽ xóa toàn bộ nội dung cũ trước khi ghi đè nội dung mới vào file, nên mặc cho mã ký tự sử dụng trong file trước khi ghi đè là gì chăng nữa, thì file sau khi ghi đè cũng sẽ có mã ký tự mới, nếu bạn chỉ định khi ghi file. Và lỗi cũng không xảy ra kể cả khi mã ký tự mới và cũ có khác nhau.ghi đè file trong python bằng mode w sẽ xóa toàn bộ nội dung cũ trước khi ghi đè nội dung mới vào file, nên mặc cho mã ký tự sử dụng trong file trước khi ghi đè là gì chăng nữa, thì file sau khi ghi đè cũng sẽ có mã ký tự mới, nếu bạn chỉ định khi ghi file. Và lỗi cũng không xảy ra kể cả khi mã ký tự mới và cũ có khác nhau.

Ví dụ chúng ta có

Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
2 được viết với mã
Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
6. Nếu chúng ta mở file này với mã ký tự
Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
7 thì lỗi cũng không xảy ra.

Ghi chèn file trong python | mode a

Ở phần trên chúng ta đã biết nếu sử dụng mode w thì chúng ta sẽ ghi đè nội dung mới lên nội dung cũ của file.Nếu như bạn không muốn làm mất nội dung cũ mà muốn ghi chèn thêm nội dung mới vào, hãy sử dụng tới mode a khi mở file bằng hàm open().
Nếu như bạn không muốn làm mất nội dung cũ mà muốn ghi chèn thêm nội dung mới vào, hãy sử dụng tới mode a khi mở file bằng hàm open().

Với mode a, nếu file được chỉ định không tồn tại, một file mới sẽ được tạo ra. Nếu file đó đã tồn tại, nội dung mới sẽ được chèn vào file bắt đầu từ vị trí cuối cùng của nội dung cũ trong file.mode a, nếu file được chỉ định không tồn tại, một file mới sẽ được tạo ra. Nếu file đó đã tồn tại, nội dung mới sẽ được chèn vào file bắt đầu từ vị trí cuối cùng của nội dung cũ trong file.

Cú pháp ghi chèn file trong python với mode a như sau:

Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
8

Chúng ta cũng sử dụng phương thức write() hoặc writelines() để ghi chèn file trong python, giống như các ví dụ cụ thể sau đây:

Giả sử chúng ta có file

Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
2 có nội dung là
l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
0, và chúng ta muốn chèn thêm nội dung
l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
1 vào cuối file*

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



7

Bạn cũng có thể sử dụng với lệnh With như sau:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



8

Cả hai cách làm đều đưa ra cùng kết quả:

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



9

path_w = 'data/src/myfile.txt'
s = 'New line 1\nNew line 2\nNew line 3'

with open(path_w, mode='w') as f:
f.write(s)
with open(path_w) as f:
print(f.read())



5

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


0

Mặc dù nếu file không tồn tại một file mới sẽ được tạo ra, nhưng nếu ngay cả folder chứa file này cũng không tồn tại, lỗi FileNotFoundError sẽ bị trả về:

Lại nữa, do phương pháp ghi đè file trong python bằng mode w sẽ xóa toàn bộ nội dung cũ trước khi ghi đè nội dung mới vào file, nên mặc cho mã ký tự sử dụng trong file trước khi ghi đè là gì chăng nữa, thì file sau khi ghi đè cũng sẽ có mã ký tự mới, nếu bạn chỉ định khi ghi file. Và lỗi cũng không xảy ra kể cả khi mã ký tự mới và cũ có khác nhau.

Ví dụ chúng ta có

Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
2 được viết với mã
Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
6. Nếu chúng ta mở file này với mã ký tự
Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
7 thì lỗi cũng không xảy ra.

Ghi chèn file trong python | mode a

Ở phần trên chúng ta đã biết nếu sử dụng mode w thì chúng ta sẽ ghi đè nội dung mới lên nội dung cũ của file.Nếu như bạn không muốn làm mất nội dung cũ mà muốn ghi chèn thêm nội dung mới vào, hãy sử dụng tới mode a khi mở file bằng hàm open().

l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
2

Với mode a, nếu file được chỉ định không tồn tại, một file mới sẽ được tạo ra. Nếu file đó đã tồn tại, nội dung mới sẽ được chèn vào file bắt đầu từ vị trí cuối cùng của nội dung cũ trong file.

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


1

Cú pháp ghi chèn file trong python với mode a như sau:

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


2

Chúng ta cũng sử dụng phương thức write() hoặc writelines() để ghi chèn file trong python, giống như các ví dụ cụ thể sau đây:

OneTwoThree

Giả sử chúng ta có file

Kiyoshi 30 Tokyo
Kiyoshi,30,Tokyo
name: Kiyoshi age: 30 address: Tokyo
2 có nội dung là
l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
0, và chúng ta muốn chèn thêm nội dung
l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
1 vào cuối file*
Do đó, chúng ta nên sử dụng kèm với lệnh
l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
3 và
l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
4 để tránh lỗi này xảy ra như sau:

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


4

Ngoài

l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
3 và
l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
4, bạn cũng có thể sử dụng tới phươg thức
l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
7 trong module
l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
8 để kiểm tra xem file chỉ định có tồn tại hay không, trước khi dùng mode x để tránh lỗi xảy ra, như ví dụ sau đây:

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


5

Lại nữa, mặc dù khi file sẽ được tạo ra nếu nó không tồn tại trước đó, tuy nhiên nếu folder chứa file đó cũng không tồn tại từ trước, lỗi FileNotFoundError sẽ xảy ra như sau. Để giải quyết lỗi này, chúng ta cần tới câu lệnh để tạo ra một folder nếu nó không tồn tại trước đó, bằng cách sử dụng modeule

l = ['One', 'Two', 'Three']

f=open(path_w, mode='w')
f.writelines(l)

f=open(path_w)
print(f.read())

f.close()
8 như sau:

path_w = 'data/src/myfile.txt'
num = 1

with open(path_w, mode='w') as f:
f.write(num)


6

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về các cách ghi file trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.ghi file trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu các kiến thức về Python trong các bài viết sau.

Viết bởi Kiyoshi. Đã đăng ký bản quyền tác giả tại Creativecommons và DMCA