文件扫描上传源码

工作中的第一个小需求:扫描一个文件夹,查看是否有文件或者有新的文件,如果有,按照固定短信发送格式生成文件,通过FTP上传到短信平台进行短信发送。

ReadMe:

项目包含两个部分:1.功能函数。2.主程序,通过调用功能函数,结合控制流实现一定频率文件扫描、生成固定格式文件,ftp上传。
功能函数包括:定时扫描;固定格式文件生成;ftp连接;ftp上传;

流程:开启定时扫描功能-->判断是否指定路径下存在文件,存在文件则获取文件名,生成固定格式.txt文件,否则什么都不做,继续定时扫描

每5秒钟扫描,看是否存在目标文件,有则上传,无则不操作,上传之后立即删除目标文件。
目标文件的生成:扫描源文件路径,看是否与临时变量保存的文件名列表一致,一致则不做操作,不一致则生成新目标文件,供ftp上传。

先上函数功能模块:

 1 #!/usr/bin/env python
 2 #-*-coding:utf-8-*-
 3 #Created on 2016-5-21上午9:08:18
 4 #author: Administrator
 5 
 6 from ftplib import FTP
 7 import os
 8 
 9 def scanf_file(dir):    #扫描file_path下是否存在文件,如果有返回文件名,如果无则返回空
10     file_list = os.listdir(dir)
11     return file_list

接着上主程序模块:

 1 #!/usr/bin/env python
 2 #-*-coding:utf-8-*-
 3 #Created on 2016-5-21上午9:12:36
 4 #author: Administrator
 5 
 6 from file_fun import *
 7 import time
 8 import datetime
 9 
10 PHONE_LIST=('13333333333',)
11 DIR = r'D:\test'
12 DES_PATH = r'/home/python/tmp'
13 #FILE_SRC = r'file_list.txt'
14 FTP_SERVER =r'192.168.1.104'
15 USERNAME = r'*******'        #实际使用时修改为实际用户名
16 PASSWORD = r'*******'        #实际使用时修改为实际密码
17 FREQUENCY = 5
18 
19 print('****************************************************************')
20 print('*                    FILE_Transfers V1.0                       *')
21 print('*                  Copyright by YU SHENG XI                    *')
22 print('****************************************************************')
23 print('The programe is running....')
24 
25 def make_file(src_file_list,file_name):
26     fp = open(file_name,'w')
27     for ph in PHONE_LIST:
28         for li in src_file_list:
29             fp.write(ph +' '+'There has file:' + li +'\n')
30     fp.close() 
31 
32 def ftp_transfer(ftp_server,username,password,des_path,file_name):
33     ftp = FTP(ftp_server)              
34     ftp.login(username, password)
35     fp = open(file_name,'rb')            
36     ftp.cwd(des_path)   
37     ftp.storbinary('STOR '+file_name,fp)  
38     fp.close()  
39     ftp.close()
40 
41 def main():
42     tmp_file = None
43     tm = datetime.datetime.now().strftime('%Y%m%d%H%M')         #获取当前时间
44     file_name = tm+'.txt'                                       #以当前时间作为文件名称
45     while True:
46         time.sleep(FREQUENCY)
47         src_file_list = scanf_file(DIR)                         #扫描原文件路径,获取文件名列表
48         if tmp_file!= src_file_list:
49             make_file(src_file_list,file_name)
50             tmp_file = src_file_list
51             ftp_transfer(FTP_SERVER, USERNAME, PASSWORD, DES_PATH,file_name)
52             os.remove(file_name)
53         
54 if __name__ == '__main__':
55     main()

PS:第一次写程序,函数模块和主程序模块分得不是很清,主程序模块也含有两个功能函数,今后程序需要注意,尽量将功能函数写在函数模块内,在主程序模块进行调用即可,提高程序的清晰度和可读性。

原文地址:https://www.cnblogs.com/chenxiforever/p/5593137.html