zoukankan      html  css  js  c++  java
  • 文件扫描上传源码

    工作中的第一个小需求:扫描一个文件夹,查看是否有文件或者有新的文件,如果有,按照固定短信发送格式生成文件,通过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:第一次写程序,函数模块和主程序模块分得不是很清,主程序模块也含有两个功能函数,今后程序需要注意,尽量将功能函数写在函数模块内,在主程序模块进行调用即可,提高程序的清晰度和可读性。

  • 相关阅读:
    Qt多表格滚动条同步
    Trie树
    计算机网络笔记--网络层--ICMP协议
    计算机网络笔记--网络层--NAT
    计算机网络笔记--IP地址
    计算机网络笔记--网络层--ARP协议
    计算机网络笔记--网络层1IP协议
    const与指针
    c/c++笔记--指向数组的指针与二维数组
    机试笔记9--二叉树的遍历
  • 原文地址:https://www.cnblogs.com/chenxiforever/p/5593137.html
Copyright © 2011-2022 走看看