2013-07-24 10 views
6

Tôi đang chạy vào lỗi sau trong khi cố gắng grep cho một thông điệp bao gồm các dòng multipe trong nhật ký ... bất cứ ai có thể cung cấp đầu vào về cách khắc phục lỗi này?bufsize phải là một số nguyên lỗi trong khi grepping một tin nhắn

Mã sản phẩm: -

print gerrit_commitmsg 
    gerritlog = Popen('git','log','--grep','gerrit_commitmsg', stdout=PIPE, stderr=PIPE) 
    print gerritlog 

LỖI: -

Commit message:- 

Build system changes 

Build system changes to include packages in the build 

Change-Id: I697558f01ae367d2baacdf2c7fcf1a03753edacd 

Traceback (most recent call last): 
    File "gerrits_in_workspace.py", line 87, in <module> 
    main() 
    File "gerrits_in_workspace.py", line 77, in main 
    grep_commitmsg(gerrit_commitmsg) 
    File "gerrits_in_workspace.py", line 48, in grep_commitmsg 
    gerritlog = Popen('git','log','--grep','gerrit_commitmsg', stdout=PIPE, stderr=PIPE) 
    File "/usr/lib/python2.7/subprocess.py", line 629, in __init__ 
    raise TypeError("bufsize must be an integer") 

Trả lời

14

Lớp subprocess.Popen hy vọng một danh sách đối số như thế này:

Popen(args, bufsize=0, ...) 

Vì vậy, bạn đang đi qua nó:

  • args = git
  • bufsize = log

Do đó lỗi (bufsize hy vọng một giá trị số nguyên). Các vector lệnh cần phải được một danh sách, như thế này:

gerritlog = Popen(['git','log','--grep','gerrit_commitmsg'], stdout=PIPE, stderr=PIPE) 
+0

nhờ, còn tôi muốn grep cho những gì có trong gerrit_commitmsg nhưng không phải là chuỗi gerrit_commitmsg chính nó, bất cứ lời khuyên về cách chúng ta có thể làm điều đó? – user1934146

+0

Đó là một câu hỏi khác, và bạn đặt cược tốt nhất có lẽ là để gửi một câu hỏi mới ở đây trên SO. – larsks

Các vấn đề liên quan