如何用Python脚本将移动SD卡文件转移到PC?
我正在做一个项目,使用我的安卓手机拍摄的图片存储在SD卡的文件夹里。我正在编写一个Python脚本,想定期把这些文件夹从SD卡移动到我电脑上的一个特定文件夹。我的手机和电脑是通过手机热点连接的,我会在手机上运行一个HTTP服务器。之前我有一个脚本,可以把图片作为邮件附件发送到我的Gmail邮箱,但现在我想把整个文件夹发送到我的电脑,不想使用互联网。请问我可以这样做吗?任何帮助都非常感谢。
让我再说得清楚一点。我已经在手机上运行了自己写的HTTP服务器的Python代码,这个服务器处理的是由安卓应用运行的HTML页面。我需要从我的电脑连接到这个手机服务器,去SD卡上一个名为'sb'的文件夹,路径是/mnt/sdcard/sb
,在这里我需要找到所有包含字母'd'的文件夹,并把这些文件夹完整地移动到我电脑上的一个目录里。
我浏览了很多页面,发现的都是如何连接到服务器并获取HTML页面或简单文件的信息,但没有找到关于如何获取文件夹并将其存储到特定位置的内容。我真的需要在29号之前完成这个工作,因为我需要在1月31日交付产品。请给我一些好的帮助。
3 个回答
0
为什么要用Python来做这个呢?你试过吗?
wget --mirror http://your_android_device/folder_to_sync/
0
你可以使用 httplib。大概可以这样写:
import httplib
conn = httplib.HTTPConnection("http://device")
conn.request("GET", "/myfile.data")
resp = conn.getresponse()
data = resp.read()
另外,你可以查看 httplib 的 Python 文档,里面有更多详细信息。
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()