2015-08-16 6 views
2

J'ai écrit un script Python qui prend une capture d'écran de mon PC à un certain intervalle et envoie cette capture d'écran à mon seau S3. Lorsque j'exécute mon script avec la commande python, cela fonctionne, mais lorsque j'exécute ce script en tâche de fond avec la commande pythonw.exe, l'opération de capture d'écran fonctionne - mais rien ne se télécharge sur S3.pythonw.exe ne peut pas télécharger de fichier sur Amazon S3

Voici mon code:

import os 
import sys 
import time 
import Image 
import ImageGrab 
import getpass 
import boto3 
import threading 
from random import randint 


s3 = boto3.resource('s3') 
username = getpass.getuser() 


#--------------------------------------------------------- 
#User Settings: 
SaveDirectory=r'C:\Users\Md.Rezaur\Dropbox\Screepy_App\screenshot' 
ImageEditorPath=r'C:\WINDOWS\system32\mspaint.exe' 

def capture_and_send(): 
    interval = randint(10,30) 
    threading.Timer(interval, capture_and_send).start() 
    img=ImageGrab.grab() 
    saveas=os.path.join(SaveDirectory,'ScreenShot_'+time.strftime('%Y_%m_%d_%H_%M_%S')+'.jpg') 
    fname = 'ScreenShot_'+time.strftime('%Y_%m_%d_%H_%M_%S')+'.jpg' 
    img.save(saveas, quality=50, optimize=True) 
    editorstring='""%s" "%s"'% (ImageEditorPath,saveas) 
    data = open(fname, 'rb') 
    s3.Bucket('screepy').put_object(Key=username+'/'+fname, Body=data) 

capture_and_send() 

Si vous n'avez pas configuré vos informations d'identification de SSFE, installez le aws-cli et exécutez la commande suivante:

aws configure 

Répondre

1

La variable fname contient seulement le nom du fichier sans informations de chemin. Vous enregistrez donc le fichier dans le chemin nommé saveas qui contient des informations sur le chemin d'accès complet. Lorsque vous ouvrez fname, il va essayer de le charger à partir du répertoire en cours. Le problème n'est pas une différence entre python.exe et pythonw.exe, mais juste d'où vous exécutez le script. Dans le premier cas, vous devez lancer le script depuis le répertoire SaveDirectory.

+0

Merci beaucoup, cela a fonctionné. – Reza

2

Merci à Alex Taylor. Après le démarrage, le programme pythonw.exe n'a pas pu trouver le répertoire en cours. La ligne suivante a été modifiée:

data = open(SaveDirectory+'\\'+fname, 'rb')