Hướng dẫn replace whole line in file python - thay thế toàn bộ dòng trong tệp python

Tôi mới đến Python 3 và thực sự có thể sử dụng một chút trợ giúp. Tôi có một tệp TXT chứa:

InstallPrompt=

DisplayLicense=

FinishMessage=

TargetName=D:\somewhere

FriendlyName=something

Tôi có một kịch bản Python mà cuối cùng, nên thay đổi chỉ hai dòng thành:

TargetName=D:\new

FriendlyName=Big

Bất cứ ai có thể giúp tôi, xin vui lòng? Tôi đã cố gắng tìm kiếm nó, nhưng tôi không tìm thấy thứ gì đó tôi có thể sử dụng. Các văn bản nên được thay thế có thể có độ dài khác nhau.

Đã hỏi ngày 26 tháng 3 năm 2010 lúc 23:27Mar 26, 2010 at 23:27

0

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]

Đã trả lời ngày 26 tháng 3 năm 2010 lúc 23:54Mar 26, 2010 at 23:54

ghostdog74ghostdog74ghostdog74

316K56 Huy hiệu vàng254 Huy hiệu bạc341 Huy hiệu Đồng56 gold badges254 silver badges341 bronze badges

1

Một giải pháp rất đơn giản cho những gì bạn đang làm:

#!/usr/bin/python
import re
import sys
for line in open[sys.argv[1],'r'].readlines[]:
  line = re.sub[r'TargetName=.+',r'TargetName=D:\\new', line]
  line = re.sub[r'FriendlyName=.+',r'FriendlyName=big', line]
  print line,

Bạn sẽ gọi điều này từ dòng lệnh là

TargetName=D:\new

FriendlyName=Big
1

Đã trả lời ngày 26 tháng 3 năm 2010 lúc 23:46Mar 26, 2010 at 23:46

Câu chuyện Dan StorydanDan Story

9.7691 Huy hiệu vàng22 Huy hiệu bạc27 Huy hiệu đồng1 gold badge22 silver badges27 bronze badges

5

Viết vào một tệp tạm thời và việc đổi tên là cách tốt nhất để đảm bảo bạn sẽ không nhận được một tệp bị hỏng nếu có sự cố

import os
from tempfile import NamedTemporaryFile
fname = "lines.txt"

with open[fname] as fin, NamedTemporaryFile[dir='.', delete=False] as fout:
    for line in fin:
        if line.startswith["TargetName="]:
            line = "TargetName=D:\\new\n"
        elif line.startswith["FriendlyName"]:
            line = "FriendlyName=Big\n"
        fout.write[line.encode['utf8']]
    os.rename[fout.name, fname]

Đã trả lời ngày 27 tháng 3 năm 2010 lúc 0:14Mar 27, 2010 at 0:14

John La Rooyjohn La RooyJohn La Rooy

Phù bằng vàng 287K5151 gold badges359 silver badges500 bronze badges

Đây có phải là một tệp cấu hình [.ini] mà bạn đang cố gắng phân tích? Định dạng trông tương tự nhau, ngoại trừ không có phần tiêu đề. Bạn có thể sử dụng

TargetName=D:\new

FriendlyName=Big
2, mặc dù nó có thể thêm không gian xung quanh "" "[tức là"
TargetName=D:\new

FriendlyName=Big
3 "so với"
TargetName=D:\new

FriendlyName=Big
4 "], nhưng nếu những thay đổi đó không quan trọng với bạn, sử dụng
TargetName=D:\new

FriendlyName=Big
2 là cách dễ dàng hơn và dễ bị lỗi hơn và dễ bị lỗi hơn hơn là cố gắng phân tích nó bằng tay mỗi lần.

Tệp TXT [INI]:

[section name]

FinishMessage=

TargetName=D:\something

FriendlyName=something

Code:

import sys
from configparser import SafeConfigParser

def main[]:
    cp = SafeConfigParser[]
    cp.optionxform = str # Preserves case sensitivity
    cp.readfp[open[sys.argv[1], 'r']]
    section = 'section name'
    options = {'TargetName': r'D:\new',
               'FriendlyName': 'Big'}
    for option, value in options.items[]:
        cp.set[section, option, value]
    cp.write[open[sys.argv[1], 'w']]

if __name__ == '__main__':
    main[]

Tệp TXT [INI] [sau]:

[section name]

FinishMessage = 

TargetName = D:\new

FriendlyName = Big

JFS

385K183 Huy hiệu vàng949 Huy hiệu bạc1624 Huy hiệu đồng183 gold badges949 silver badges1624 bronze badges

Đã trả lời ngày 27 tháng 3 năm 2010 lúc 3:31Mar 27, 2010 at 3:31

TargetName=D:\new

FriendlyName=Big
6 Script hoạt động cả Python 2.6+ và Python 3.x:

#!/usr/bin/env python
from __future__ import print_function
import sys, fileinput

# here goes new values
substitions = dict[TargetName=r"D:\new", FriendlyName="Big"]

inplace = '-i' in sys.argv # make substitions inplace
if inplace:
   sys.argv.remove['-i']

for line in fileinput.input[inplace=inplace]:
    name, sep, value = line.partition["="]
    if name in substitions:
       print[name, sep, substitions[name], sep='']
    else:
       print[line, end='']

Example:

$ python3.1 subs_names.py input.txt
InstallPrompt=

DisplayLicense=

FinishMessage=

TargetName=D:\new

FriendlyName=Big

Nếu bạn hài lòng với đầu ra thì hãy thêm tham số

TargetName=D:\new

FriendlyName=Big
7 để thay đổi tại chỗ:

TargetName=D:\new

FriendlyName=Big
0

Đã trả lời ngày 27 tháng 3 năm 2010 lúc 0:48Mar 27, 2010 at 0:48

JFSJFSjfs

385K183 Huy hiệu vàng949 Huy hiệu bạc1624 Huy hiệu đồng183 gold badges949 silver badges1624 bronze badges

Làm thế nào để bạn thay thế toàn bộ dòng trong một tệp bằng Python?

Solutions:..
Phương pháp 1: Vòng lặp qua từng dòng và sử dụng phương thức String.replace [] ..
Phương pháp 2: Đọc và ghi đè toàn bộ tệp cùng một lúc ..
Phương pháp 3: Vòng lặp qua từng dòng và sử dụng phương thức chuỗi.REPLACE [] ..
Phương pháp 3: Viết nội dung sẽ được thay thế thành một tệp mới và thay thế tệp cũ ..

Làm thế nào để bạn sửa đổi một dòng trong một tệp bằng Python?

Làm thế nào để bạn chỉnh sửa một tệp văn bản trong Python? Sử dụng writeLines [] hoặc write [] để ghi vào tệp trong python khi mở tệp để chỉnh sửa với mở [file, mode = "r"], đặt chế độ thành "w" để ghi vào tệp hoặc "A" để nối thêm đến cuối tập tin.Use writelines[] or write[] to write to a file in Python When opening a file to edit with open[file, mode="r"] , set mode to "w" to write to a file or "a" to append to the end of a file.

Làm thế nào để bạn thay thế văn bản trong một tệp trong Python?

Phương pháp 1: Xóa tất cả văn bản và viết văn bản mới trong cùng một tệp ..
Phương pháp 2: Sử dụng chức năng thay thế trong vòng lặp ..
Phương pháp 3: Sử dụng mô -đun HĐH để thay thế tệp bằng văn bản mới ..
Phương pháp 4: Sử dụng FileInput.đầu vào[].

Làm thế nào để bạn thay thế một từ trong một dòng trong Python?

Phương thức python String thay thế [] Phương thức thay thế [] thay thế một cụm từ được chỉ định bằng một cụm từ được chỉ định khác.Lưu ý: Tất cả các lần xuất hiện của cụm từ được chỉ định sẽ được thay thế, nếu không có gì khác được chỉ định.The replace[] method replaces a specified phrase with another specified phrase. Note: All occurrences of the specified phrase will be replaced, if nothing else is specified.

Bài Viết Liên Quan

Chủ Đề