1、概述
距離上一篇帖子過去了將近一年的時間,主要緣由是由於這一年剛加入新公司,入職了一個新的行業,因此須要花時間學習新的業務知識,最近纔有時間去探索上一篇帖子說的自動化平臺的開發,此次只是先作了一下可行性研究,詳細以下html
2、前端設計
只作了基本的幾個控件, 在文本框內輸入要生成的文件數量,點擊生成後在相應的目錄下生成對應的文件前端
對應的代碼也很簡單,就一個from表單,以下:python
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>測試文件生成頁</title> 6 </head> 7 <body> 8 <form action="/result" method="post"> 9 TXT: <input type="text" name="txt" style="width:80px"> 10 <br> 11 JPG: <input type="text" name="jpg" style="width:80px"> 12 <br> 13 PDF: <input type="text" name="pdf" style="width:80px"> 14 <br> 15 EXEC: <input type="text" name="exec" style="width:80px"> 16 <br><br> 17 <input type="submit" value="生成" style="width:130px"> 18 </form> 19 </body> 20 </html>
3、後臺邏輯
以前打算用Django實現,但目前項目組用的都是tornado,因此此次使用tornado來實現web
tornado教程:http://demo.pythoner.com/itt2zh/index.html服務器
tornado官方文檔:http://www.tornadoweb.org/en/stable/app
後臺源碼:tornado
邏輯很簡單,獲取前端txt文本框的值,若是值不爲空,則生成對應數量的測試文件oop
1 #!/usr/bin/env python 2 # coding:utf-8 3 import tornado.httpserver 4 import tornado.ioloop 5 import tornado.options 6 import tornado.web 7 import tornado.escape 8 import os 9 import time 10 11 from tornado.options import define, options 12 13 define("port", default=8004, help="run on the given port", type=int) 14 15 PATH = "D:/test_data/" 16 17 18 def create_txt(path=PATH, file_num=1, file_size=8): 19 """ 20 :param path: 測試文件的存放路徑 21 :param file_num: 須要生成的數量 22 :param file_size: 每一個文件的大小,以KB爲單位 23 """ 24 if not os.path.exists(path): 25 os.mkdir(path) 26 for i in range(file_num): 27 file_name = "test_txt_"+str(i)+".txt" 28 data = "test_t"+str(time.localtime()) 29 with open(os.path.join(path, file_name), 'w') as f_obj: 30 for j in range(8*file_size): 31 f_obj.write(data) 32 print("create file: test_txt_(0-%d).txt in path %s success, file size: %sKB" % (file_num, path, file_size)) 33 34 35 class MainHandler(tornado.web.RequestHandler): 36 def get(self): 37 self.render("index.html") 38 39 40 class Resultandler(tornado.web.RequestHandler): 41 def post(self): 42 txt_num = self.get_argument("txt") 43 if str(txt_num) != "": 44 create_txt(file_num=int(txt_num)) 45 46 47 if __name__ == "__main__": 48 handlers = [ 49 (r"/", MainHandler), 50 (r"/result", Resultandler), 51 ] 52 template_path = os.path.dirname(__file__) + "/" + "template" 53 tornado.options.parse_command_line() 54 print("application is running") 55 app = tornado.web.Application(handlers, template_path) 56 http_server = tornado.httpserver.HTTPServer(app) 57 http_server.listen(options.port) 58 tornado.ioloop.IOLoop.instance().start()
4、結果
若是作過web開發的朋友應該知道,這樣生成的文件是存放在服務器端的,而我最初的設想是直接在客戶端生成的,這樣就與設計不符,方案缺乏可行性post
5、其餘
一、跟同事一塊兒討論 建議先在服務器上生成,而後在下載到用戶的電腦,這樣技術上可行,但實現就複雜了,並且若是須要的文件數量多且文件較大,傳輸的時間會很長學習
二、雖然次方案不能準備測試文件,但生成多個文件的分享地址仍是能實現的,平臺基本的結構就是這樣了,還在學習當中,歡迎高手指點!