当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 求人改写 python 脚本至 perl 脚本
帖子发表于 : 2010-09-16 15:08 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
RT
有一台恐龙级的工作站(win nt)的,死活装不上 python,不过上面有 perl,请大虾帮忙改一下下面这个脚本 :em06 :
其主要功能是监视某目录,若有新添加的文件则上传到 ftp 服务器上去

[python]
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Name: ftp_auto_upload.py
# Author: xiooli <xioooli[at]yahoo.com.cn>
# Site: http://joolix.com
# Licence: GPLv3
# Version: 100915

'''monitor a paticular dir and automatically upload the new added files in the dir to a ftp server.'''

import os, time, threading, platform
from ftplib import FTP
path_to_watch = "."
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
# in seconds
watch_gap = 5
wait_file_time = 10
log_file = './log.txt'
ftp_server = 'your_ftp_server'
ftp_data_dir = 'ftp_uploads'
ftp_user = 'your_ftp_user'
ftp_passwd = 'your_ftp_password'

def log(info, log_file = log_file):
info = time.strftime('%Y/%m/%d-%H:%M') + ' | ' + str(info) + '\n'
print info
f = open(log_file, 'a')
f.write(info)
f.close()

class ftp_upload(threading.Thread):
def __init__(self, ftp_server, user, passwd, file_name, data_dir, debuglevel = 0, ftp_port = 0):
threading.Thread.__init__(self)
self.ftp = FTP()
self.ftp_server = ftp_server
self.ftp_port = ftp_port
self.ftp_user = user
self.ftp_passwd = passwd
self.file_name = file_name
self.data_dir = data_dir
self.debuglevel = debuglevel
def run(self):
ftp = self.ftp
dirs = []
tmp_func = lambda x: dirs.append(x.split(' ')[-1])
ftp.set_debuglevel(self.debuglevel)
file_handler = open(self.file_name, 'rb')
try:
ftp.connect(self.ftp_server, self.ftp_port)
ftp.login(self.ftp_user, self.ftp_passwd)
ftp.cwd(self.data_dir)
ftp.dir(tmp_func)
dirname = os.path.abspath(path_to_watch).split(os.path.sep)[-1]
if dirname:
savedir = dirname
if platform.system() == 'Windows':
savedir = dirname.decode('GBK').encode('UTF-8')
if not savedir in dirs:
ftp.mkd(savedir)
ftp.cwd(savedir)
bufsize = 1024
log('STOR ' + self.file_name)
file_name = self.file_name
if platform.system() == 'Windows':
file_name = self.file_name.decode('GBK').encode('UTF-8')
ftp.storbinary('STOR ' + file_name, file_handler, bufsize)
log(' File "%s" uploaded to "%s" successfully!' %(self.file_name,'ftp://%s/%s' %(ftp_server, dirname) ))
except Exception, e:
log(' Uploading failed: ' + str(e))
file_handler.close()
ftp.quit()

if __name__ == '__main__':
while True:
time.sleep (watch_gap)
after = dict ([(f, None) for f in os.listdir (path_to_watch)])
added = [f for f in after if not f in before]
removed = [f for f in before if not f in after]
if added:
log("Added: " + ", ".join (added))
time.sleep(wait_file_time)
for file in added:
ftp_upload(ftp_server, ftp_user, ftp_passwd, file, ftp_data_dir).start()
if removed:
log("Removed: " + ", ".join (removed))
before = after
[/python]


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 求人改写 python 脚本至 perl 脚本
帖子发表于 : 2010-09-16 19:56 
头像

注册: 2009-11-21 22:49
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
不熟悉python~ 飘过~ :em03
用perl 主要处理文件,但你这个不好做!


_________________
我思故我在,身在尘嚣中,思飞九霄外。
~~~~~~~~~~~~~~~~~~~~
代码:
Life="Precious"
while [ "$Life" = "Precious" ]
do
    echo "Happy New Day"
    echo "Coding better Life"
    echo "Sleep for 7 Hours"; sleep 25200
done


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 求人改写 python 脚本至 perl 脚本
帖子发表于 : 2010-09-16 20:05 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
深情召唤 perl 党 :em03


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译