Я написал программу, которая вызывает другую программу из себя через библиотеку subprocess
, а затем завершает себя через sys.exit()
.
Но это не так просто. Там должен быть список вопросов. (обратите внимание, что речь идет не о самом скрипте, а о применении этого скрипта, созданного через pyinstaller)
- Когда я захожу в диспетчер задач, во вкладке сведений я вижу там 4 теста.exe, 2 из них работают в текущей папке, остальные 2 находятся в
APPDATA\Local\test
os.remove(o)
не выполняется path + f'\\{k}.txt'
сохраняются только в APPDATA\Local\test
, иf'{k}test.txt'
только для текущей папки
Видимо, программа вообще не запускается из appdata, но это не так, потому что в диспетчере задач она отображается даже дважды. В чем причина такого поведения? И как это исправить?
UPD: я позаботился о том, чтобы файлы сохранялись только в упадте, записывая os.chdir(path)
после else:
. Но первое выполнение все еще не может быть завершено.
import sys
import os
import time
path = os.path.dirname(os.getenv('APPDATA')) + '\\Local\\test'
try:
os.mkdir(path)
except OSError:
pass
if not os.path.isfile(path + '\\test.exe'):
with open(path + '\\info.txt', 'w', encoding='utf-8') as f:
f.write(sys.argv[0])
subprocess.call(['copy', sys.argv[0], path + '\\test.exe'], shell=True)
subprocess.call(path + '\\test.exe', shell=True)
sys.exit()
else:
with open(path + '\\info.txt', 'r', encoding='utf-8') as f:
o = f.readline()
if os.path.isfile(o):
try:
os.remove(o)
except:
pass
k = 0
while True:
time.sleep(5)
with open(path + f'\\{k}.txt', 'w', encoding='utf-8') as f:
f.write('test message 1')
with open(f'{k}test.txt', 'w', encoding='utf-8') as f:
f.write('test message 2')
k += 1