pythonw.exe无法将文件上传到Amazon S3

时间:2015-08-16 04:56:24

标签: python boto3 pythonw

我编写了一个Python脚本,它以一定的间隔截取我的电脑的屏幕截图,并将该屏幕截图发送到我的S3存储桶。当我使用python命令运行我的脚本时,它可以工作,但当我使用pythonw.exe命令将此脚本作为后台任务运行时,屏幕截图捕获操作可以正常工作 - 但没有任何内容上传到S3。

这是我的代码:

{ "players": [
{"player":{
        "player-name":"Cam Newton",
        "player-stats":{
            "position":"QB",
            "passing-yards":226,
            "passing-touchdowns":3


        }
}
},
{"player":{
    "player-name":"Aaron Rodgers",
    "player-stats":{
        "position":"QB",
        "passing-yards":327,
        "passing-touchdowns":3,


    }
}
}}

如果您没有配置aws凭据,请安装aws-cli并运行命令:

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()

1 个答案:

答案 0 :(得分:2)

感谢Alex Taylor。

启动pythonw.exe程序后找不到当前目录。 以下行已更改:

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