程式,終於完成80%,進入最終測試階段了
還來不及update,日子就一天一天的過
約莫不知道哪天,搞定了server端接收後
其實還卡了一個問題,卡很久,但我決定不想卡在這,先轉攻client端的部分
這個問題就是
利用網站傳檔在傳到後台資料庫會發生無法讀取繁體字的狀況
中文就是這樣,至於設utf-8的問題,我也是卡很久,小學弟有辦法解決,但我到目前還是不知道怎麼解決
唯一解決的方法,我就擺到後面去
我繼續將我可能有使用到的網站給擷取了下來,但後續開發的動作,有沒有參考我記得我是沒有參考到的。
https://stackoverflow.com/questions/1046656/an-integer-is-required-open
http://web.ntnu.edu.tw/~samtseng/present/Python_and_Chinese.pdf
https://stackoverflow.com/questions/19591458/python-reading-from-a-file-and-saving-to-utf-8/19591815
https://www.fyears.org/2015/06/electron-as-gui-of-python-apps.html
http://www.runoob.com/python/python-gui-tkinter.html
https://www.reddit.com/r/django/comments/2grsay/how_to_read_csv_file_from_memory/
https://stackoverflow.com/questions/19130958/what-does-it-mean-to-call-a-function-in-python
https://programminghistorian.org/lessons/output-data-as-html-file
https://www.geeksforgeeks.org/get-post-requests-using-python/
2.7
https://docs.python.org/2.7/library/httplib.html?highlight=http%20client
3.6
https://docs.python.org/3/library/http.client.html
http://www.01happy.com/python-httplib-get-and-post/
回來開發桌機端後
我自己是在上一週想用python做一個生日快樂祝福視窗給人的時候,發現其實根本不用介面,也可以達到我要的結果
節省開發及研究的時間+可以達成功效
所以我就沒有繼續開發Tkinter
python 的 .py檔可以直接打包成exe
如果不需介面的話,可以考慮使用這個方式
裡面的內容,我就很簡單的寫一寫
大致上就是將所有的函數def()全部擺在最上面
然後主要使用input, print, if, while, for迴圈
還有一些學習到新的程式寫法
來分享一下
終止python程式語法
import os
os._exit(0)
一個字一個字打印
def slowprint(s):
for c in s + '\n':
sys.stdout.write(c)
sys.stdout.flush() # defeat buffering
time.sleep(random.random() * 0.3)
更改0.3數字可以更改打印字的速度
slowprint('Hello, 各位聰明的同學')
這個是看要在哪下指令
呼叫外部程式
import os
os.system("路徑/程式")
Python 3 為預設utf-8可以直接打印繁體字
Python 2 跟 Python 3 輸入 Input 使用的不同
https://blog.csdn.net/suibianshen2012/article/details/51378948
No mudule name requests and Requirement already satisfied 解法
由於是簡易的,所以本來我想使用
httplib來處理我上傳post/get
但後來我發現,用簡單的方法就可以做到我用Post, get回傳到我的server端
Server端是用Django的View來接受做處理,然後再回傳到我的後台跟Vm
如何在client端發送get/post到Server接收
用python的requests做發送
Server端則是用Django的View做處理
這邊是Client端簡單的寫法
import os
import requests
readfile = open('ooo.csv', 'rb')
my_files = {'upload_file': readfile }
my_data = {'studentID': '123','upload_file': readfile.read()}
r = requests.post('http://ooo.ooo.ooo.ooo/upload/',data=my_data)
Server那邊,有作更動過,但因為我想將Server端跟Client端分開
所以,應該在準備連結的時候,回去將Server端改一改,再發篇文寫Server端的事
基本上就寫這樣XD
剛好有處理回傳字串+檔案
而這邊剛好也是我上面提到卡繁體字的問題
解決方法就是用rb, 用binary 的方式讀檔案,壓成字串,再丟到Server用binary的方法寫檔案接著再回傳到雲端的資料夾裡,這是目前找到的方式。
readfile = open('ooo.csv', 'rb')
有open跟with open的方法
然後後面rb 有代表的字
http://bigpxuan.blogspot.tw/2016/07/python-open.html
這個大大的文章中有解釋
client 端 binary讀 >> 壓字串 >> POST 到 指定的網段(Server端) >> Server端接收 >>做處理 >>回傳到Server端裡的資料夾
大概是這樣
所以我桌機的程式就是之後壓成exe扔到windows 做客戶端
不過卡了一個大問題就是我發現我做的程式會被掃毒擋
先讓學生輸入學號 >> 讓他們讀注意事項 >> 開始 >> Call 一個程式 >> 結束 >> Call另外一個程式 >>將兩個程式回傳Server
大概長這樣
程式碼的話,大致上架構是
# -*- coding: utf-8 -*-
import os
import sys
import requests
#import module
#definition function
def slowprint(s):
for c in s + '\n':
sys.stdout.write(c)
sys.stdout.flush() # defeat buffering
time.sleep(random.random() * 0.3)
def mydata(message):
mydata = message
upload_data = {'data': 'mydata'}
r = requests.post('http://ooo.ooo.ooo.ooo/upload/',data=upload_data)
def ...
#your program begin
slowprint('...')
slowprint('...')
slowprint('...')
#Input
slowprint('請輸入你的學號:')
message = input("input:")
if ...
mydata()
else:
print("...")
...
...
大約就是這樣囉~~
目前就等兩個外部程式功能搞定,跟打包後
然後回去更改Server端好了後,就可以進入最終測試階段
希望這週可以搞定
然後跟教授說,下週就開始執行系統啦~
來記錄一下明天要做的事
-
將子程式打包並做測試(將收取的資料筆做更改)
-
等待第二個子程式做好
-
更改Server端程式碼(將接收動作搞定並分成兩個網段接收)
-
測試Server端跟Client端連結傳資料
-
(看可不可以新增ip)
-
(看要如何將上傳檔案改名為學生學號)
-
(有可能會需要做每10分鐘上傳的機制)
最後偷偷提醒一下
要在windows執行就要用windows打包程式
要在mac執行就要用mac打包
能不能跨平台我不知道
至少我用mac打包的程式是只有mac能執行~