Python chèn dòng vào tệp

Rất tiếc, tệp không hỗ trợ chèn văn bản vào giữa tệp
.

Nếu tệp nhỏ, chẳng hạn như dưới 50 MB, có lẽ cách dễ nhất
thực hiện là thực hiện sáu bước.

  1. mở tệp để đọc;
  2. sử dụng readlines[] để đọc từng dòng một trong danh sách;
  3. đóng tệp;
  4. nối vào dòng thứ ba trong danh sách;
  5. mở lại tệp để ghi;
  6. viết các dòng đã sửa đổi trong danh sách trở lại tệp

Như vậy đã đủ gợi ý chưa?

Ngoài ra, tôi phải thực hiện tác vụ này trên nhiều tệp cùng một lúc, các tệp được liệt kê trong kết quả tìm kiếm của studio trực quan sẽ giống như thế này

Find all "foo[", Subfolders, Find Results 1, "c:\", "*.txt"
  C:\file1.txt[2]:a = foo[c]
  C:\file1.txt[4]:b = foo[b]
  C:\file1.txt[8]:c = foo[v]
  C:\file2.txt[2]:a1 = foo[c]
  C:\file2.txt[4]:a3 = foo[b]
  C:\file2.txt[8]:variable1 = foo[v]
  Matching lines: 6    Matching files: 2    Total files searched: 214
  Find was stopped in progress.

Vì vậy, chúng tôi cần một cách để lấy tập hợp các tệp từ kết quả tìm kiếm của studio trực quan và sau đó chạy tác vụ trên từng tệp

Đây là thuật toán chính nơi

  • a > b
    a = foo[c]
    a = bar[42]
    b = 2
    b = foo[b]
    b = bar[42]
    foo
    bar
    foobar
    c = foo[v]
    c = bar[42]
    
    0 là dòng cần chèn, trong trường hợp này là
    a > b
    a = foo[c]
    a = bar[42]
    b = 2
    b = foo[b]
    b = bar[42]
    foo
    bar
    foobar
    c = foo[v]
    c = bar[42]
    
    1
  • a > b
    a = foo[c]
    a = bar[42]
    b = 2
    b = foo[b]
    b = bar[42]
    foo
    bar
    foobar
    c = foo[v]
    c = bar[42]
    
    2 trong mẫu mà sau đó chúng tôi chèn dòng Trong trường hợp này,
    a > b
    a = foo[c]
    a = bar[42]
    b = 2
    b = foo[b]
    b = bar[42]
    foo
    bar
    foobar
    c = foo[v]
    c = bar[42]
    
    3 khớp với
    a > b
    a = foo[c]
    a = bar[42]
    b = 2
    b = foo[b]
    b = bar[42]
    foo
    bar
    foobar
    c = foo[v]
    c = bar[42]
    
    4 chẳng hạn
  • a > b
    a = foo[c]
    a = bar[42]
    b = 2
    b = foo[b]
    b = bar[42]
    foo
    bar
    foobar
    c = foo[v]
    c = bar[42]
    
    5 là mẫu của các tệp chúng tôi đang tìm kiếm trong kết quả tìm kiếm của studio trực quan

Chức năng chính là

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
6

________số 8

Tạo một tập hợp các tệp từ kết quả tìm kiếm phòng thu trực quan

Đây là mã sẽ lấy tập hợp các tệp trong kết quả tìm kiếm. Trong đó

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
5 bằng với
a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
8. Có nghĩa là bất kỳ tệp nào có phần mở rộng
a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
9 có tên là bất kỳ ký tự từ nào

Hàm

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
7 trả về một đối tượng tệp có hai phương thức hữu ích để ghi văn bản vào tệp.
a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
20 và
a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
21

  • Phương thức
    a > b
    a = foo[c]
    a = bar[42]
    b = 2
    b = foo[b]
    b = bar[42]
    foo
    bar
    foobar
    c = foo[v]
    c = bar[42]
    
    20 ghi một chuỗi vào tệp văn bản
  • Phương thức
    a > b
    a = foo[c]
    a = bar[42]
    b = 2
    b = foo[b]
    b = bar[42]
    foo
    bar
    foobar
    c = foo[v]
    c = bar[42]
    
    21 ghi danh sách các chuỗi vào một tệp cùng một lúc

Phương thức

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
21 chấp nhận một đối tượng có thể lặp lại, không chỉ một danh sách, vì vậy bạn có thể truyền một bộ chuỗi, một tập hợp các chuỗi, v.v. , đến phương thức
a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
21

Để ghi một dòng vào tệp văn bản, bạn cần thêm một ký tự dòng mới theo cách thủ công

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
8

Viết ví dụ về tệp văn bản

Ví dụ sau đây cho thấy cách sử dụng hàm

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
20 để ghi danh sách văn bản vào tệp văn bản

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
0

Nếu bản đọc. txt không tồn tại, hàm

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
7 sẽ tạo một tệp mới

Sau đây trình bày cách ghi danh sách các chuỗi văn bản vào tệp văn bản

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
1

Nếu bạn coi mỗi phần tử của danh sách là một dòng, bạn cần nối nó với ký tự xuống dòng như thế này

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
2

Nối tệp văn bản

Để nối thêm vào tệp văn bản, bạn cần mở tệp văn bản ở chế độ nối thêm. Ví dụ sau nối thêm các dòng mới vào tệp

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
88

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
4

đầu ra

Ghi vào tệp văn bản UTF-8

Nếu bạn viết các ký tự UTF-8 vào tệp văn bản bằng mã từ các ví dụ trước, bạn sẽ gặp lỗi như thế này

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
5

Để mở tệp và ghi các ký tự UTF-8 vào tệp, bạn cần truyền tham số

a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
89 cho hàm
a > b
a = foo[c]
a = bar[42]
b = 2
b = foo[b]
b = bar[42]
foo
bar
foobar
c = foo[v]
c = bar[42]
7

Chủ Đề