前言:有时候遇到需要在电脑某个目录下新增文件就同步到手机,所以有了以下自动程序
import os
import time
import subprocess
from watchdog.observers.polling import PollingObserver
from watchdog.events import FileSystemEventHandler
class FileChangeHandler(FileSystemEventHandler):
def on_created(self, event):
if event.is_directory:
return
else:
self.process(event.src_path)
def process(self, file_path):
# 等待文件下载完成
file_size = os.path.getsize(file_path)
while True:
time.sleep(3) # 每隔3秒检查一次文件大小
new_size = os.path.getsize(file_path)
if new_size == file_size:
break
file_size = new_size
# 使用adb命令将文件传输到手机指定目录
target_dir = "/sdcard/DCIM/PC"
adb_push_command = f"adb push {file_path} {target_dir}"
subprocess.run(adb_push_command, shell=True)
# 发送手机广播
broadcast_action = "android.intent.action.MEDIA_SCANNER_SCAN_FILE"
broadcast_data = f"-d file:///sdcard/DCIM/PC/"
adb_broadcast_command = f"adb shell am broadcast -a {broadcast_action} {broadcast_data}"
subprocess.run(adb_broadcast_command, shell=True)
def main():
path = "C:\mp4" # 将此处替为您要监控的目录路径
event_handler = FileChangeHandler()
observer = PollingObserver()
observer.schedule(event_handler, path, recursive=False)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
if __name__ == "__main__":
main()
食用指南:
- time.sleep(3) //设置文件对比间隔,主要是对比文件是是否处于下载状态
- target_dir = "/sdcard/DCIM/PC" //设置文件传输到手机指定目录
- broadcast_data = f"-d file:///sdcard/DCIM/PC/" //设置传输文件后手机发送广播扫描指定文件夹新增文件并添加到图库,完美解决传输文件后在图库和微信QQ内都看不到图片或视频的问题。如果不是媒体文件可以把这一段删除,不删除也不影响
- path = "C:\mp4" //电脑要监控的目录路径
优点:使用文件事件触发,节省资源,提高效率,无需自动实时监控文件夹对比文件
缺点:需要手机USB连接电脑,可使用无线局域网ADB
评论 (0)