заменить конкретные значения определенной строки из файла - PullRequest
0 голосов
/ 21 февраля 2019

Я создал графический интерфейс с использованием Tkinter.Вот код:

from tkinter import *

master = Tk()
def execute():
import os
os.chdir("batfile")
os.system("open.bat")

def calculations():
shaftdia = float(e1.get())
outdia = 2 * shaftdia
 thickfork = 0.75*shaftdia
 thicksingleye = 1.75*shaftdia
 diapin = shaftdia
 diapincollar = 1.5*shaftdia

 Label(master, text="{} ".format(str(outdia))).grid(row=5, column = 2, pady=5)
 Label(master, text="{} ".format(str(thickfork))).grid(row=6, column=2, pady=5)
 Label(master, text="{} ".format(str(thicksingleye))).grid(row=7, column=2, pady=5)
 Label(master, text="{} ".format(str(shaftdia))).grid(row=8, column=2, pady=5)
 Label(master, text="{} ".format(str(diapincollar))).grid(row=9, column=2, pady=5)

 print("Outer diameter of eye: %f" % float(outdia))
 print("Thickness of fork: %f" % float(thickfork))
 print("Thickness of single eye: %f" % float(thicksingleye))
 print("Diameter of pin: %f" % float(diapin))
 print("Diameter of knuckle pin and collar: %f" % float(diapincollar))
 pass


Label(master, text="Shaft Diameter").grid(row=4, pady=5)
Label(master, text="Outer diameter of eye").grid(row=5, pady=5)
Label(master, text="Thickness of fork").grid(row=6, pady=5)
Label(master, text="Thickness of single eye").grid(row=7, pady=5)
Label(master, text="Diameter of Pin").grid(row=8, pady=5)
Label(master, text="Diameter of knuckle pin head and collar").grid(row=9, pady=5)

 e1 = Entry(master)
 e1.grid(row=4, column=2)

Button(master, text='CALCULATE', command=calculations).grid(row=10, column=0)
Button(master, text='CREATE', command=execute).grid(row=10, column=1)

master.mainloop( ) 

После некоторого ввода диаметра вала я получаю определенные значения внешнего диаметра глаза, толщины вилки и т. Д. Я хочу, чтобы это значение заменило предыдущие значения, присутствующие в файле,Рассмотрим файл .txt, который содержит следующий текст:

Outer diameter of eye = 20
Thickness of fork = 7.5
Thickness of single eye = 17.5
Diameter of pin = 10
Diameter of knuckle pin and collar = 15 

Я хочу заменить эти измерения новыми измерениями, которые создаются

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019
file = open("xyz.txt","w+")
file.write("") #whatever needs to be written
file.close()

, что open("xyz.txt","w+") сделает, это создаст файл с именем xyz.txt.

Примечание: файл, если его нет, тогда мы используем "w +", иначе мы можем сделать "w", если файл присутствует.

Каждый раз, когда вы запускаете свой кодзначения, присутствующие в файле, будут удалены, и в него будет записан новый набор значений, заменив тем самым старые значения

Вы можете использовать это также, если файл уже создан

file = open("xyz.txt","w")

Более подробную информацию об обработке файлов можно получить по адресу здесь .

0 голосов
/ 21 февраля 2019

Учитывая значения, помещенные в текстовый файл, необходимо изменить.

list.txt:

Outer diameter of eye = 20
Thickness of fork = 7.5
Thickness of single eye = 17.5
Diameter of pin = 10
Diameter of knuckle pin and collar = 15

, а затем:

logFile = "list.txt"

with open(logFile) as f:
    content = f.readlines()

# you may also want to remove empty lines
content = [l.strip() for l in content if l.strip()]

# list of new Values
newVal_list = [23,54,67,19.43,4]
i = 0
for line in content:
    find_TC = line.find('=')

    if find_TC > 0:
        x = line.split('=', 1)[1]

        print(line.replace(x,str(newVal_list[i])))   # for replacing
        print("Old Value: {}, New Value: {}".format(x, newVal_list[i]))
        i += 1

OUTPUT :

Old Value:  20, New Value: 23
Old Value:  7.5, New Value: 54
Old Value:  17.5, New Value: 67
Old Value:  10, New Value: 19.43
Old Value:  15, New Value: 4

EDIT:

Для поиска и замены значений в одном файле с помощью fileinput:

import fileinput

# list of new Values
newVal_list = [23,54,67,19.43,4]
i = 0
with fileinput.FileInput(logFile, inplace=True) as file:
    for line in file:
        find_TC = line.find('=')
        if find_TC > 0:
            x = line.split('=', 1)[1]
            line = line.replace(x, " " + str(newVal_list[i]))
            print(line)
            i += 1

ВЫХОД :

Outer diameter of eye = 23
Thickness of fork = 54
Thickness of single eye = 67
Diameter of pin = 19.43
Diameter of knuckle pin and collar = 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...