该回答引用于gpt与OKX安生共同编写:
好的,以下是代码实现:
- 将文件拷贝到另一台Windows系统的指定文件夹内
如果要将文件拷贝到另一台Windows系统上的指定文件夹内,可以使用SMB/CIFS协议进行网络共享。
首先需要安装samba客户端库(pysmb):
pip install pysmb
然后可以使用以下代码实现:
from smb.SMBConnection import SMBConnection
import os
import shutil
import datetime
src_dir = "/path/to/source/directory"
dst_dir = "\\\\server-name\\share-name\\destination-directory"
today = datetime.date.today()
for file_name in os.listdir(src_dir):
file_path = os.path.join(src_dir, file_name)
if os.path.isfile(file_path):
file_time = datetime.date.fromtimestamp(os.path.getmtime(file_path))
if file_time == today:
conn = SMBConnection('username', 'password', 'client-name', 'server-name')
conn.connect('server-ip', 139)
with open(file_path, 'rb') as f:
conn.storeFile('share-name', dst_dir, f)
conn.close()
在上面的代码中,需要替换'username'
、'password'
、'client-name'
、'server-name'
和'server-ip'
为实际的SMB/CIFS连接信息。
- 查询文件夹中指定日期前的文件并剪切到固定本地文件夹里
可以使用os.path.getmtime()
函数获取文件的最后修改时间,然后计算出指定日期前的时间戳,再与每个文件的最后修改时间比较,选择需要剪切的文件。
以下是代码:
import os
import shutil
import datetime
import zipfile
src_dir = "/path/to/source/directory"
dst_dir = "/path/to/destination/directory"
delta_days = 90
cutoff_time = time.time() - delta_days * 86400
for file_name in os.listdir(src_dir):
file_path = os.path.join(src_dir, file_name)
if os.path.isfile(file_path):
file_time = os.path.getmtime(file_path)
if file_time < cutoff_time:
shutil.move(file_path, dst_dir)
zip_file_path = "/path/to/archive.zip"
with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for file_name in os.listdir(dst_dir):
file_path = os.path.join(dst_dir, file_name)
if os.path.isfile(file_path):
zipf.write(file_path, arcname=file_name)
os.remove(file_path)
在上面的代码中,需要替换'/path/to/source/directory'
、'/path/to/destination/directory'
和'/path/to/archive.zip'
为实际的目录和文件名。需要注意的是,以上代码只能跑一次,因为文件已经被移动或压缩。