2017-04-25 56 views
1

我正在尋找「沉默」python中yum API的調試級別。例如,我將兩個yum命令分配給像下面這樣的變量;沉默Yum API輸出

import yum 
yb = yum.YumBase() 

yum_conf = yb.conf.config_file_path 
package_list = yb.doPackageLists(pkgnarrow='updates', patterns='', ignore_case=True) 

運行腳本時它爲CentOS 7以下回來:

Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
* base: mirror.sov.uk.goscomb.net 
* extras: mirror.sov.uk.goscomb.net 
* updates: mirror.sov.uk.goscomb.net 

然後在CentOS 6:

Loaded plugins: fastestmirror 
Determining fastest mirrors 

我不想這樣詳細級別打印。我認爲這與日誌級別有關,但在如何改變這種情況的交叉路徑上。

回答

1

所有你需要的是這兩條線,

yb.preconf.debuglevel = 0 
    yb.preconf.errorlevel = 0 

例如,一條巨蟒素文字,getpkg.py看起來像下面這樣:

import yum 

    yb = yum.YumBase() 
    yb.preconf.debuglevel = 0 
    yb.preconf.errorlevel = 0 
    yb.install(name='emacs-nox') 
    yb.resolveDeps() 
    yb.processTransaction() 

結果:

~]# python getpkg.py 
Installing: 1:perl-parent-0.225-244.el7.noarch 0/8868 [1/32] 
Installing: 1:perl-parent-0.225-244.el7.noarch 144/8868 [1/32] 
Installing: 1:perl-parent-0.225-244.el7.noarch 2649/8868 [1/32] 
Installing: 1:perl-parent-0.225-244.el7.noarch 5686/8868 [1/32] 
.... 
.... 
+0

這很完美,我只用了調試一級沉默了輸出。謝謝。 – Apenketh

+1

iamauser - 我已經有了,但請注意以下內容:記錄下名聲低於15的人的投票,但不要更改公開顯示的帖子分數。 – Apenketh

+0

很酷......不用擔心... – iamauser

0

上下文管理器的完美場景。這要麼被打印到標準輸出或標準錯誤,下面的技術適用於任何一種。

import io 
import contextlib 
import yum 

f = io.StringIO() 
with contextlib.redirect_stdout(f): # or redirect_stderr... or both 
    ''' All the output in here is redirected to the filelike object, f ''' 

    yb = yum.YumBase() 
    yum_conf = yb.conf.config_file_path 
    package_list = yb.doPackageLists(pkgnarrow='updates', patterns='', 
     ignore_case=True) 
s = f.getvalue() # s now contains all that output you didn't want