Python mengganti seluruh baris dalam file

Adakah yang bisa membantu saya? . Teks yang harus diganti bisa memiliki panjang yang berbeda

Solusi terbaik

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    sline=line.strip().split("=")
    if sline[0].startswith("TargetName"):
        sline[1]="new.txt"
    elif sline[0].startswith("FriendlyName"):
        sline[1]="big"
    line='='.join(sline)    
    print(line)

Solusi Terkait

Bagaimana cara mengganti karakter dengan baris baru di Vim

Gunakan TargetName=D:\new FriendlyName=Big _0 alih-alih TargetName=D:\new FriendlyName=Big 1

Mengganti dengan

TargetName=D:\new

FriendlyName=Big
1 menyisipkan karakter nol ke dalam teks. Untuk mendapatkan baris baru, gunakan
TargetName=D:\new

FriendlyName=Big
0. Saat mencari baris baru, Anda masih menggunakan
TargetName=D:\new

FriendlyName=Big
1. Asimetri ini disebabkan oleh fakta bahwa
TargetName=D:\new

FriendlyName=Big
1 dan
TargetName=D:\new

FriendlyName=Big
0 melakukan hal yang sedikit berbeda

TargetName=D:\new

FriendlyName=Big
_1 cocok dengan akhir baris (baris baru), sedangkan
TargetName=D:\new

FriendlyName=Big
0 cocok dengan carriage return. Di sisi lain, dalam substitusi
TargetName=D:\new

FriendlyName=Big
_1 menyisipkan karakter nol sedangkan
TargetName=D:\new

FriendlyName=Big
0 menyisipkan baris baru (lebih tepatnya, diperlakukan sebagai input CR). Berikut adalah contoh kecil non-interaktif untuk mengilustrasikannya, menggunakan fitur baris perintah Vim (dengan kata lain, Anda dapat menyalin dan menempelkan yang berikut ke terminal untuk menjalankannya).
import fileinput
for line in fileinput.FileInput("file",inplace=1):
    sline=line.strip().split("=")
    if sline[0].startswith("TargetName"):
        sline[1]="new.txt"
    elif sline[0].startswith("FriendlyName"):
        sline[1]="big"
    line='='.join(sline)    
    print(line)
1 menunjukkan hexdump dari file yang dihasilkan

echo bar > test
(echo 'Before:'; xxd test) > output.txt
vim test '+s/b/\n/' '+s/a/\r/' +wq
(echo 'After:'; xxd test) >> output.txt
more output.txt
Before:
0000000: 6261 720a                                bar.
After:
0000000: 000a 720a                                ..r.

Dengan kata lain,

TargetName=D:\new

FriendlyName=Big
_1 telah memasukkan byte 0x00 ke dalam teks;

Python – Cara memeriksa apakah suatu file ada tanpa pengecualian

Jika alasan Anda memeriksa adalah agar Anda dapat melakukan sesuatu seperti

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    sline=line.strip().split("=")
    if sline[0].startswith("TargetName"):
        sline[1]="new.txt"
    elif sline[0].startswith("FriendlyName"):
        sline[1]="big"
    line='='.join(sline)    
    print(line)
4, lebih aman menggunakan
import fileinput
for line in fileinput.FileInput("file",inplace=1):
    sline=line.strip().split("=")
    if sline[0].startswith("TargetName"):
        sline[1]="new.txt"
    elif sline[0].startswith("FriendlyName"):
        sline[1]="big"
    line='='.join(sline)    
    print(line)
5 untuk mencoba membukanya. Memeriksa dan kemudian membuka berisiko menghapus atau memindahkan file atau sesuatu antara saat Anda memeriksa dan saat Anda mencoba membukanya

Jika Anda tidak berencana untuk segera membuka file, Anda dapat menggunakan

Kembalikan

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    sline=line.strip().split("=")
    if sline[0].startswith("TargetName"):
        sline[1]="new.txt"
    elif sline[0].startswith("FriendlyName"):
        sline[1]="big"
    line='='.join(sline)    
    print(line)
_7 jika path adalah file reguler yang sudah ada. Ini mengikuti tautan simbolis, jadi keduanya dan bisa benar untuk jalur yang sama

import os.path
os.path.isfile(fname) 

jika Anda perlu memastikan itu adalah file

Dimulai dengan Python 3. 4, menawarkan pendekatan berorientasi objek (di-backport ke

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    sline=line.strip().split("=")
    if sline[0].startswith("TargetName"):
        sline[1]="new.txt"
    elif sline[0].startswith("FriendlyName"):
        sline[1]="big"
    line='='.join(sline)    
    print(line)
9 di Python 2. 7)

from pathlib import Path

my_file = Path("/path/to/file")
if my_file.is_file():
    # file exists

Untuk memeriksa direktori, lakukan

if my_file.is_dir():
    # directory exists

Untuk memeriksa apakah objek

echo bar > test
(echo 'Before:'; xxd test) > output.txt
vim test '+s/b/\n/' '+s/a/\r/' +wq
(echo 'After:'; xxd test) >> output.txt
more output.txt
_0 ada secara independen apakah itu file atau direktori, gunakan
echo bar > test
(echo 'Before:'; xxd test) > output.txt
vim test '+s/b/\n/' '+s/a/\r/' +wq
(echo 'After:'; xxd test) >> output.txt
more output.txt
1

Bagaimana Anda mengganti seluruh baris dengan Python?

Kami pertama-tama akan membuka file dalam mode read-only dan membaca semua baris menggunakan readlines(), membuat daftar baris yang menyimpannya dalam variabel. Kami akan membuat perubahan yang diperlukan pada baris tertentu dan setelah itu, kami membuka file dalam mode hanya-tulis dan menulis data yang dimodifikasi menggunakan writelines()

Bagaimana Anda mengganti string dalam file dengan Python?

Untuk mengganti teks dalam file, kita akan membuka file dalam read-only menggunakan fungsi open(). Kemudian kita akan t=membaca dan mengganti konten dalam file teks menggunakan fungsi read() dan replace() .

Bagaimana cara mengganti string dalam file teks?

Mengganti teks dalam Notepad .
Buka file teks di Notepad
Klik Edit di bilah menu, lalu pilih Ganti di menu Edit
Setelah berada di jendela Cari dan Ganti, masukkan teks yang ingin Anda temukan dan teks yang ingin Anda gunakan sebagai pengganti

Bagaimana Anda mengganti baris tertentu dalam file menggunakan Java?

Memanggil metode replaceAll() pada string yang diperoleh melewati baris yang akan diganti (baris lama) dan baris pengganti (baris baru) sebagai parameter . Instansiasi kelas FileWriter. Tambahkan hasil metode replaceAll() ke objek FileWriter menggunakan metode append().