Vraag Python-bestand uit een ander script uitvoeren


Ik heb een bestand met de naam main.py en heeft de volgende code:

from os import system
from time import sleep
from datetime import datetime

while True:
    print(datetime.now(),"-+- Starting")
    system('file.py')
    print(datetime.now(),"-+- Crash")
    sleep(300)

Als ik echter probeer het uit de shell uit te voeren met python3 main.py Ik krijg de volgende foutmelding:

sh: 1: file.py: not found
^CTraceback (most recent call last):
  File "main.py", line 14, in <module>
    sleep(300)  # sleep for 5 minutes

file.py net zoals main.py bevinden zich allebei in dezelfde directory onder /home/username/Documents/py-script/.

Ik ben zelfs veranderd system('file.py') naar de regel hieronder, maar ik kan het nog steeds niet uitvoeren file.py.

system('/home/username/Documents/py-script/file.py')

Het programma draait goed op Windows, zijn er eventuele extra stappen die ik moet nemen om het te laten werken op mijn Ubuntu desktop (niet VM). Ik heb ook 744 toegewezen aan beide bestanden.


3
2017-07-10 04:00


oorsprong




antwoorden:


U moet de shebang-regel (#! Interpreter) toevoegen aan 'file.py'

#!/usr/bin/python of #!/usr/bin/env python- Dit zal instrueren om het bestand uit te voeren met python. Zorg er ook voor dat het bestand voldoende rechten heeft om uit te voeren.

of

je zou het programma moeten bellen met python prefix

from os import system
from time import sleep
from datetime import datetime

while True:
    print(datetime.now(),"-+- Starting")
    system('python file.py')
    print(datetime.now(),"-+- Crash")
    sleep(300)

3
2017-07-10 04:41



Of met /usr/bin/env python - A.B.
Ik vergat te vermelden dat ik de shebang-regel toevoegt, maar ik voeg deze toe aan 'main.py'. Hoe dan ook ik gebruikte python file.py en het liep zoals verwacht. Bedankt - Leb
Blij dat het werkte! - devav2