如何使用python脚本将文件从移动SD卡移动到PC?

时间:2013-01-27 11:04:32

标签: python http

我正在开发一个项目,我的Android手机拍摄的图像存储在SD卡的文件夹中。我正在开发一个python脚本,需要定期将文件夹从SD移动到我的PC中的特定文件夹。手机和PC通过移动热点连接,我将在手机中运行http服务器。以前我曾经有脚本将电子邮件附件形式的图像发送到我的Gmail地址,但现在我想将整个文件夹发送到我的PC我不想使用互联网。我可以这样做吗?我很感激对此有任何帮助。

让我让自己更清楚。我已经在手机上运行了自己创建的httpServer python代码,该代码处理由android应用程序运行的html页面。我需要从我的PC连接到那个移动服务器,我需要转到SD卡中名为'sb'的文件夹,路径是/mnt/sdcard/sb,我需要找到包含字母'd'的所有文件夹将这些文件夹从移动设备完全移动到我的PC中的目录。

浏览我发现的各种页面都是连接到服务器并从那里获取HTML页面或简单文件,但我找不到任何告诉我如何获取文件夹并将其存储在特定位置的内容。我真的需要在29日之前完成这项工作。我需要在1月31日交付产品。请给我一些帮助。

3 个答案:

答案 0 :(得分:0)

为什么要使用python? 你试过吗

wget --mirror http://your_android_device/folder_to_sync/

答案 1 :(得分:0)

您可以使用httplib。有些东西:

import httplib

conn = httplib.HTTPConnection("http://device")
conn.request("GET", "/myfile.data")
resp = conn.getresponse()
data = resp.read()

另请参阅Python documentation of httplib

答案 2 :(得分:0)

使用套接字编程。以下是您可以使用它轻松发送文件的代码。

server.py

import os   
import sys,time 
import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", port))
server_socket.listen(5)

client_socket, address = server_socket.accept()
print "Conencted to - ",address,"\n"


while (files):
    print '\nMaybe, pending work'
    for au in files:
        if (au.find('d')>-1):
            os.chdir(au)
            imgFiles = os.listdir(au)
            if (imgFiles[i].endswith('.jpg')):
                imgs=imgFiles[i]
                file_name = open(imgs,'rb')
                print file_name
                while True:
                    strng = file_name.read()
                    client_socket.sendall(strng)
                    if not strng:  break        
                file_name.close()
                #client_socket.send("done")
        else:
            time.sleep(2) 
time.sleep(5)
exit()

client.py

import socket,os
import time

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("address", port))

#folder name
fp = open(filename,'wb')
# image
while True:
strng = client_socket.recv(1024)
print "4"
if not strng: break
fp.write(strng)
print "5"
fp.close()
print "Data Received successfully"
exit()