Jag använder två separata skript, Scale1.py och Scale2.py. För att köra dem anger jag sudo python Scale1.py eller sudo python Scale2.py från terminalens kommandorad. Jag vill ha en rad i Scale2.py skript där jag trycker på en knapp bryts programmet och kör Scale1.py. Något liknande här, som inte fungerar. 
 if GPIO.input(23) == False: break(sudo python Scale1.py)  
Svar
 os.system("sudo python scale1.py") 
först måste du importera os-modulen
 import os 
Jag har inte ett pi med min bankomat för att testa, men det här kommer från det andra svaret på denna fråga: https://stackoverflow.com/questions/89228/calling-an-external-command-in-python
Kommentarer
Svar
Använd i allmänhet underprocess -modul
subprocess.call(["sudo","python","scale1.py"]) 
för kommandoradsanrop.
Ett exempel som behandlar resultatet av ett underprocessanrop;
 result = subprocess.check_output(["sudo","service","mpd","restart"]) 
Underprocess ersätter flera äldre moduler och funktioner, som os.system och os.spawn . Det gör ett bra jobb med att sanera argument, så det skyddar dig från skalinjektion .
https://docs.python.org/2/library/subprocess.html
För att köra ett andra pythonscript är det naturligtvis inget behov av CLI-samtal, du kan importera dem.
Kommentarer
Svar
Du kan använda sudo som Harry sib föreslog, men du måste lägga till användaren som kör det första skriptet till sudoers-filen .
Det bästa sättet att köra ett pythonscript från ett annat pythonscript är att importera det. Du bör ha logiken för ditt skript i en metod i det andra skriptet:
# Scale2.py def run(): do_first() do_second() [...] # Run it only if called from the command line if __name__ == "__main__": run()
# Scale1.py import Scale2 if (GPIO.input(23) == False): Scale2.run()
Kommentarer
-  +1, Eftersom python kan detta, blir det 
cleanestsvaret. - +1 , detta är det rätta sättet att göra vad OP vill ha och borde antagligen vara det accepterade svaret.
 
os.system()har tagits bort till förmån försubprocess, se stackoverflow.com/a/4256153/4212158