파일에서 한 줄의 블록을 삭제하는 방법에 대해 고민하고 있습니다. 코드는 다음과 같습니다파이썬 파일에서 한 줄의 블록 삭제하기
#!/usr/bin/python
import argparse
import re
import string
##getting user inputs
p = argparse.ArgumentParser()
p.add_argument("input", help="input the data in format ip:port:name", nargs='*')
args = p.parse_args()
kkk_list = args.input
def printInFormat(ip, port, name):
formattedText = '''HOST Address:{ip}:PORT:{port}
mode tcp
bind {ip}:{port} name {name}'''.format(ip=ip,
port=port,
name=name)
textWithoutExtraWhitespaces = '\n'.join([line.strip() for line in formattedText.splitlines()])
# you can break above thing
# text = ""
# for line in formattedText.splitlines():
# text += line.strip()
# text += "\n"
return(formattedText)
#####here im writing writing the user inoput to a file and it works great.
#with open("file.txt", "a") as myfile:
# for kkk in kkk_list:
# ip, port, name = re.split(":|,", kkk)
# myfile.write(printInFormat(ip, port, name))
###### here is where im struggling.
for kkk in kkk_list:
ip, port, name = re.split(":|,", kkk)
tobedel = printInFormat(ip, port, name)
f = open("file.txt", "r+")
d = f.readlines()
f.seek(0)
if kkk != "tobedel":
f.write(YY)
f.truncate()
f.close()
사용자 입력으로 file.txt를 추가합니다. 즉 (형식 : ip : 포트 : 이름). 스크립트가 ./script.py이
Host Address:192.168.0.10:PORT:80
mode tcp
bind 192.168.0.10:80 abc
Host Address:10.1.1.10:PORT:443
mode tcp
bind 10.1.1.10:443 xyz
가 지금은 파일에서 라인을 삭제하려는 192.168.0.10:80:string 192.168.0.10:80:string로 excuted 때 파일 항목 아래에 포함됩니다. 사용자 입력이 동일한 방식으로 주어질 때 txt. 위의 코드가 실행되면 아무 일도 일어나지 않습니다. 나는 초심자이고 정말로 이해한다. 이 질문은 python multiple user args
무엇을 삭제 하시겠습니까? 조금 설명 할 수 있니? 같은 예일 수도 있습니다. 그것은 당신의 코드에서 명확하지 않습니다. – arunk2
@ArunKumar 두 번째 코드 창에서 언급 한 두 블록을 삭제하려고합니다. 스크립트가 args : : 으로 실행될 때 file.txt에서 해당 항목을 삭제해야합니다. 감사. –
bindo