Ich habe Skript test1.py (Beispiel)Python öffnet zweimal eine Datei, wenn subprocess.Popen für Lauf verwendet ein anderes Skript
import test2
def main():
f = open("File.txt")
test2.run()
while True:
pass
if __name__ == '__main__':
main()
Und test2.py
import subprocess, sys, os
def run():
# Self run
subprocess.Popen(['C:\\Windows\\System32\\cmd.exe', '/C', 'start',
sys.executable, os.path.abspath(__file__)])
def main():
while True:
pass
if __name__ == '__main__':
main()
Das Problem, dass die ist Starten des zweiten Skripts öffnet die Datei "File.txt" erneut. Warum öffnet das zweite Skript beim Start die Datei?
D:\test>Handle.exe File.txt
Handle v4.0
Copyright (C) 1997-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
python.exe pid: 9376 type: File 29C: D:\test\File.txt
python.exe pid: 9792 type: File 29C: D:\test\File.txt
Ich gab ein einfaches Beispiel, für Anweisungen meine Probleme. Mein Code ist ein bisschen komplizierter und daher kann ich die Datei vor dem Verzweigen nicht schließen. Ob es möglich ist, einen Kindprozess zu unterdrücken, erben Dateideskriptor? – deniska369
Der Subprozess kann es schließen, wenn Sie erwarten, dass es sich um einen lang andauernden Prozess handelt und wenn die mehreren Dateizugriffe ein zusätzliches Problem verursachen. – Owen
Ok, ich habe eine Lösung gefunden. Need setup close_fds = Wahr in subprocess.Popen. Vielen Dank für Ihre Antwort – deniska369