Найти - Пользователи
Полная версия: Помогите разобраться пожалуйста
Начало » Python для новичков » Помогите разобраться пожалуйста
1 2
Thatzr
Добрый день, с программированием все плохо, но тем не менее поступила задача которую нужно выполнить, спросить по данной теме особо не у кого, поэтому очень прошу помощи у Вас.
Нужно написать скрипт, который из xml файла удаляет 2 строчки, затем нужно будет сделать еще некоторые манипуляции, но это пока не важно, гугл перекопал весь, вроде кажется прям на поверхности лежит а сам не могу понять(ну тупой наверное что поделать).
Скорость выполнения особой роли не играет, так что нужно обойтись без подключаемых модулей для работы с xml.
Раньше никогда не сталкивался с программированием, и времени разбираться не так много, очень прошу помощи.Сам дошел только до того как открыть файл и вывести содержимое этих 2 строчек котрые нужно удалить:


 f = open("C:/Users/serv.xml", "r")
all=f.readlines()
f = open("C:/Users/serv.xml", "w")
str1 = f.readline()
str2 = f.readlines()[-1]
print(all,str1,str2)

Помогите советом пожалуйста
PEHDOM
Thatzr
Нужно написать скрипт, который из xml файла удаляет 2 строчки,
по какому признаку скрипт должен понять какие строчки нужно удалить?
doza_and
 with open("C:/Users/serv.xml", "r") as f:
   d=f.read()
new_content="\n".join(d.split()[2:]) # рабочая колбаса
with open("C:/Users/serv_new.xml", "w") as f:
   f.write(new_content)

А вообще есть unix средство:
 tail -n +3 C:/Users/serv.xml >C:/Users/serv_new.xml
Оно доступно под виндой если поставить mingw или в эмуляторе nix под десяткой.

Но таки вам правильно пишут. В разметке xml переводы строк игнорируются, сегодня они могут быть а завтра исчезнут, смысл xml от этого почти не зависит.
Thatzr
PEHDOM
первая и последняя строка



Спасибо за советы, подсказанная конструкция “with open” позволила мне гуглить в новом направлении, после чего сделал такой код:

with open(r“CUsers/serv.xml”, “r”) as file:
lines = file.readlines()
del lines
del lines
with open(r“CUsers/serv.xml”, “w”) as file:
file.writelines(lines)

Понимаю что все очень просто, но повторюсь ранее никогда не писал ничего) Спасибо!
doza_and
Thatzr
первая и последняя строка
Thatzr
после чего сделал такой код:
Он странный
вам бы записать
 file.writelines(lines[1:-1])

Посмотрите тему срезы списков.
Thatzr
doza_and
Извиняюсь за опечатку, там где del lines в конце номера строк, спасибо сделал проще, как Вы писали, просто в writelines вставил номера строк которые нужно удалить

    file.writelines(lines[1:-1])

Подскажите пожалуйста такой момент, нужно запустить программку (.exe) она создает файл,который мне и нужно редактировать, программка запускает командную строку, затем нужно нажать любую кнопку - программа закроется и файл создастся. Сделал так:

 import subprocess
def startexe():
    program = "C:/Users/Desktop/script/str.exe"
    process = subprocess.Popen(program, stdout=subprocess.PIPE)
    code = process.communicate()

Программа ждет когда я нажму кнопку, как сделать так, чтобы она запускалась и кнопка жалась автоматически?
angree77
Thatzr
затем нужно нажать любую кнопку - программа закроется и файл создастся
а не проще ее из процессов прибить?
или послать сигнал на завершение работы программы?
doza_and
Thatzr
Программа ждет когда я нажму кнопку, как сделать так, чтобы она запускалась
Самый самый правильный подход переделать str.exe так чтобы там не было дурацких кнопок. Судя по всему она там вообще не нужна.
прибить при помощи kill тоже хорошо.
Ну а если хочется помучаться то вам всякие pywinauto помогут.

Еще вариант, объясните что делает это чудо str.exe. Вполне возможно что проще перенести ее функционал на Python. Получите более простую а может быть и производительную систему.
Thatzr
angree77
Да, подойдет, если есть такая функция которая убивает через время, так как после запуска нужно пару секунд чтобы поработал процесс.
doza_and
str.exe запускается приложение, которое формирует файл лицензии программы в виде документа xml, при запуске открвыается командная строка в которой нужно нажать любую кнопку, затем приложение закрывается создавая xml файл
doza_and
Thatzr
открвыается командная строка
Для консольного интерфейса все может оказаться довольно просто
https://stackoverflow.com/questions/49744471/sending-keystrokes-to-subprocess-using-pythons-popen
прицепляетесь к входному потоку и суете ей нажатие кнопки. Получится или нет зависит от того на каком уровне обрабатывается нажатие. может понадобиться флашить выходной буфер.

Есть и спец модули для этого.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB