作者MashiroKinji (MashiroKinji)
看板Python
標題[問題] subprocess和參數編碼問題
時間Mon Jan 4 15:47:03 2016
我寫了一支程式用法大概是這樣
python print_date_list.py start_date end_date
去印出兩日期之間的日期
而我直下對程式下指令
python print_date_list.py 2015-10-15 2015-11-15
這樣程式會正常運行
但是如果我利用另一個python程式去
subprocess.cell(['python','print_date_list.py','2015-10-15','2015-11-15'])
會出現
initial_value must be unicode or None, not str
的錯誤
不知道問題是不是出在print_date_list.py程式中有把str 轉 datetime
datetime.strptime(sys.argv[2], u"%Y-%m-%d").date()
這行上面還是有編碼的問題...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.17.133.18
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1451893625.A.C44.html
1F:→ MashiroKinji: 以找到問題處可能是寫檔案的時候byteIO和StringIO 01/04 15:58
2F:→ MashiroKinji: 的問題 可是不知道為什麼subprocess會錯誤直接下指 01/04 15:59
3F:→ MashiroKinji: 令就不會 01/04 15:59
4F:→ bibo9901: u'2015-10-15', u'2015-11-15' 這樣可以嗎? 01/04 16:29
5F:→ ENEP: py2? py3? 01/04 16:52
6F:→ ENEP: 還有一個可能是OS 如果你用py2 on windows, check: 01/04 17:05
8F:→ ENEP: 簡單的說就是cli下的argv格式不一定等於subprocess給的argv 01/04 17:07
9F:→ MashiroKinji: 我發現問題了 因為調用subprocess它選用python2.7去 01/04 17:21
10F:→ MashiroKinji: 執行 01/04 17:21
11F:→ MashiroKinji: 但是我是用python3去寫的 不知道有沒有方法指定 01/04 17:22
12F:→ MashiroKinji: subprocess 用的python是 3的版本 01/04 17:22
13F:→ darkgerm: 寫完整路徑 (e.g., /usr/bin/python3) 或是設環境變數 01/04 21:43
14F:→ darkgerm: 講錯了,設環境變數不行 01/04 21:45