[問題] subprocess和參數編碼問題

看板Python作者 (MashiroKinji)時間8年前 (2016/01/04 15:47), 編輯推噓0(0014)
留言14則, 4人參與, 最新討論串1/2 (看更多)
我寫了一支程式用法大概是這樣 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://www.ptt.cc/bbs/Python/M.1451893625.A.C44.html

01/04 15:58, , 1F
以找到問題處可能是寫檔案的時候byteIO和StringIO
01/04 15:58, 1F

01/04 15:59, , 2F
的問題 可是不知道為什麼subprocess會錯誤直接下指
01/04 15:59, 2F

01/04 15:59, , 3F
令就不會
01/04 15:59, 3F

01/04 16:29, , 4F
u'2015-10-15', u'2015-11-15' 這樣可以嗎?
01/04 16:29, 4F

01/04 16:52, , 5F
py2? py3?
01/04 16:52, 5F

01/04 17:05, , 6F
還有一個可能是OS 如果你用py2 on windows, check:
01/04 17:05, 6F

01/04 17:06, , 7F

01/04 17:07, , 8F
簡單的說就是cli下的argv格式不一定等於subprocess給的argv
01/04 17:07, 8F

01/04 17:21, , 9F
我發現問題了 因為調用subprocess它選用python2.7去
01/04 17:21, 9F

01/04 17:21, , 10F
執行
01/04 17:21, 10F

01/04 17:22, , 11F
但是我是用python3去寫的 不知道有沒有方法指定
01/04 17:22, 11F

01/04 17:22, , 12F
subprocess 用的python是 3的版本
01/04 17:22, 12F

01/04 21:43, , 13F
寫完整路徑 (e.g., /usr/bin/python3) 或是設環境變數
01/04 21:43, 13F

01/04 21:45, , 14F
講錯了,設環境變數不行
01/04 21:45, 14F
文章代碼(AID): #1MYYDvn4 (Python)
文章代碼(AID): #1MYYDvn4 (Python)