Zeray Rice

..

飯匙蛇開發手記

第一次開發出來相對比較成功的APP = =嗯 這篇文章用來記錄下開發過程中遇到的一些問題以及解決方法

1.配置文件存儲

其實一開始是沒有打算要建立一個配置文件的,直接修改程序來設置用戶名密碼的,不過後來在和rexavin的討論中說到這裏,說用戶體驗性可能會差很多,于是乎就選擇建立一個配置文件,最初的配置文件就是直接f = open(‘fanfou.conf’,’w’) 了。。結果寫好之後發現 是在當前工作目錄下創建 fanfou.conf,于是決定轉移到 ~/.fanfouconf …但是糾結于如果獲取 ~ 的位置,在open中直接寫 f = open(‘~/.fanfouconf’,’w’) 失敗 後來搜索到

1
os.path.expanduser('~')

這樣一條語句,得以解決,不過這個也決定了這個程序只能在linux/mac下運行。。。

2.xml文件解析

呃 這個看起來很簡單,在php裏面是個非常簡單的事情,不過現在用的是python,所以開始瘋狂Google,Google到了很多東西,不過要麽是不理解,要麽就是用不成,後來找到minidom看起來還靠譜,就去試了下,不過 一開始一直import不進來,我還以為是我這個版本的Python不支持minidom了。。。後來找到原因是因為我測試用的文件名是xml.py… 然後我import xml.dom.minidom …….然後就發生錯誤了。。。這個的其他方面沒有什麽好說的 網上關于這個的資料有很多。。

3.同時在兩個數組裏面用for

呃 這個小標題有點表述不清,一般而言,Python中的for 是 for XXX in Array 這樣的形式,來遍歷整個數組,不過我現在想讓他同時遍歷兩個數組,查到了zip函數,直接看代碼把:

1
2
for a,b in zip(aa,ab)
  print a + ': ' + b

就是這樣子,其他同樣沒有神馬好說的

4.模擬HTML表單上傳圖片

後來想做圖片上傳功能,就跑去研究這個了,發現關于這方面的資料好少, 不過最終在StackOverflow上找到了一篇提問,回答者給出了一個urllib2的擴展庫 urllib2_file.py ,加上這個之後,即可直接進行文件上傳,果斷保存下來適用,很方便~

示例代碼

1
2
3
4
5
6
7
8
9
import sys
import urllib2_file
import urllib2

URL='http://aquate.us/upload.php'
d = [('uploaded', open(sys.argv[1:]))]
req = urllib2.Request(URL, d)
u = urllib2.urlopen(req)
print u.read()

5.檢測文件類型

圖片上傳的時候要判斷一下文件類型,以防上傳上什麽亂七八糟的東西,判斷文件類型就不得不說MIME,關于MIME具體的解釋請看維基百科

具體方法是用python-xdg庫來判斷,代碼實現:

1
2
3
import xdg.Mime

print xdg.Mime.get_type('XXX')

不過這個方法沒有找到如何判斷MIME類型,給出一個思路是把xdg.Mime.get_type得到的MIMEtype對象轉化為字符串,然後用xx.index(‘image’) 來判斷是否是圖片,同時又搜到另外一種方法,mimetypes庫,代碼實現:

1
2
3
4
5
6
import mimetypes

try:
  mimetypes.guess_type(sys.argv[1]).index('image')
except:
  print '文件类型错误!'

Comments