我想编程的是,
当 USB驱动器连接到系统时,代码必须自动启动并复制 usb驱动器的内容(目录,文件等。)到系统的默认备份目录。
我遇到了一些网站,发现我可以使用 shutil库 https://docs.python.org/2/library/shutil.html 高级文件操作。我还没有使用过Shutil Library,那么有没有其他方法可以实现,
之前有人这样做了所以请帮助。感谢
答案 0 :(得分:5)
我已解决这个问题并解决了,希望这对那些像我这样的初学者有帮助。
首先使用shutil复制文件和目录的代码以获得更多帮助https://docs.python.org/2/library/shutil.html, 连接USB驱动器以执行操作
第1步: code_to_copy.py
import os
import datetime
import shutil
from shutil import copytree, ignore_patterns
files = os.listdir('/media/user/')
destination = '/home/user/Path/Backup/back_%s'%datetime.datetime.now()
try :
for f in files:
source = '/media/user/%s' % f
copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))
except Exception as e:
print e
你可以运行这个文件来检查它是否正在复制,然后
创建bash文件
第2步: code_to_copy.sh
#!/bin/bash
python /home/user/path/code_to_copy.py
确保您拥有此文件的权限
第3步:添加到cron
$ crontab -e
#add this line
* * * * * /home/user/path/code_to_copy.sh > /tmp/code_to_copy.log
检查日志文件/tmp/code_to_copy.log
一分钟后,您连接的设备数据将被复制到备份文件夹和hola。
答案 1 :(得分:3)
您可以使用pythons shutil库来处理复制操作非常简单。如果您需要自动执行该过程,请尝试以下步骤:
1:如果获取pendrive或任何其他可移动驱动器中的所有文件,则获取所有文件并按照以下方式将其写入列表:
import os
files = os.listdir('path-to-removable-media')
2:一旦完成迭代遍历列表并使用shutil库复制文件。
import shutil
for f in files:
shutil.copyfile('/source path/%s' % f, '/destination path/%s' %f)
3:现在,如果您需要自动化该过程,请创建一个bash文件(扩展名为sh的文件),其中包含python脚本所在文件夹中的以下内容。(例如:创建文件test.sh并复制以下内容)
#!/bin/bash
clear
python script.py
4:如果您需要检查或运行特定间隔,并且如果未连接可移动媒体,则需要在cronjob中添加此例外情况需要处理异常情况。
5:为获取源代码,您可以在python中使用子进程。
import subprocess
output = subprocess.Popen("lsblk", stdout=subprocess.PIPE, shell=True)
for out in output.communicate()[0].split():
if '/media/' in out:
print out
这将为linux设备提供可移动媒体的路径。
答案 2 :(得分:0)
这是一个如何将文件复制到USB(可移动设备)的示例,您可以将其反转。
import os
file = "cat.jpg"
os.system("for /F \"tokens=1*\" %a in (\'fsutil fsinfo drives\') do (for %c in (%b) do (for /F \"tokens=3\" %d in (\'fsutil fsinfo drivetype %c\') do (if %d equ Removable (copy " + file + " %c))))")