日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python cmd下载模块_Python cmd包_程序模块 - PyPI - Python中文网

發布時間:2023/12/14 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python cmd下载模块_Python cmd包_程序模块 - PyPI - Python中文网 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CMDY

從python運行命令的一個方便的包

安裝# latest version

pip install git+https://github.com/pwwang/cmdy

# released version

pip install cmdy

為什么在sh之外還有一個?oncotator不與sh一起運行,無論我嘗試了什么。

無法用烘焙命令替換參數,請參見以下示例:

fromshimportlsls=ls.bake(l=True)print(ls())# ls -l# but now I somehow want to run `ls` (without `-l`) command with `ls()`ls(l=False)# not work

無法保存命令的配置,因為命令有其可靠的首選項。

無法指定可執行文件的完整路徑。

沒有管道/重定向標記。

基本用法fromcmdyimportlsprint(ls())

參數

像sh,cmdy可以有非關鍵字參數,但首選關鍵字參數。fromcmdyimporttartar("cvf","/tmp/test.tar","/my/home/directory/")

帶關鍵字參數curl("http://duckduckgo.com/",o="page.html",silent=True)# curl http://duckduckgo.com/ -o page.html --silent

order關鍵字參數:curl("http://duckduckgo.com/","-o","page.html","--silent")# orfromcollectionsimportOrderedDictcurl("http://duckduckgo.com/",OrderedDict([('o','page.html'),('silent',True)]))

關鍵字參數的前綴和分隔符:fromcmdyimportbedtools,bcftools,lsbedtools.intersect(wa=True,wb=True,a='query.bed',b=['d1.bed','d2.bed','d3.bed'],names=['d1','d2','d3'],sorted=True,_prefix='-')#bedtools intersect -wa -wb -a query.bed -b d1.bed d2.bed d3.bed -names d1 d2 d3 -sortedbcftools.query(_=['a.vcf','b.vcf'],H=True,format='%CHROM\t%POS\t%REF\t%ALT\n')# bcftools query --format '%CHROM\t%POS\t%REF\t%ALT\n' -H a.vcf b.vcf# _prefix defaults to 'auto' ('-' for short options, '--' for long)# You may also define arbitrary prefix:# command(a = 1, bc = 2, _prefix = '---')# command ---a 1 ---bc 2ls(l=True,block_size='KB',_sep='auto')# ls -l --block-size=KB# _sep defaults to ' '. 'auto' means ' ' for short options, '=' for long

一個命令中前綴和分隔符的不同組合:fromcmdyimportjava# Note this is just an example for old verion picard. Picard is changing it's stylejava({'jar':'picard.jar','_prefix':'-','_sep':' '},'SortSam',I='input.bam',O='sorted.bam',SORTED_ORDER='coordinate',_raw=True,_prefix='',_sep='=')# java -jar picard.jar SortSam I=input.bam O=sorted.bam SORT_ORDER=coordinate# The first dictionary usees _prefix and _sep in itself if specified, otherwise uses the ones specified with kwargs.# _raw = True keeps SORTED_ORDER as it is, otherwise, it'll be transformed into SORTED-ORDER# This is useful when some command has option like '--block-size', but you can still use 'block_size' as keyword argument.

列表參數的重復鍵:fromcmdyimportsortsort(k=['1,1','2,2n'],_='a.bed',_dupkey=True)# sort -k 1,1 -k 2,2n a.bed

返回代碼和異常fromcmdyimportxx()... ...

raise CmdyReturnCodeException(self)

│ └

cmdy.CmdyReturnCodeException: Unexpected RETURN CODE 127, expecting: [0][PID]38254[CMD] x

[STDERR] /bin/sh: x: command not found

您可以使用try/catch來捕獲它:fromcmdyimportx,CmdyReturnCodeExceptiontry:x()exceptCmdyReturnCodeExceptionasexprint('Command returned%s'%ex.cmdy.rc)

您可以通過以下方式允許多個返回代碼:x(_okcode = [0, 127])或x(_okcode = '0,127')

重定向fromcmdyimportifconfigifconfig(_out="/tmp/interfaces")# or you can use shell redirection notationifconfig(_out=">")>"/tmp/interfaces"# or# ifconfig(_out = "/tmp/interfaces")## appendifconfig(_out=">")>>"/tmp/interfaces"# or# ifconfig(_out_ = "/tmp/interfaces")# redirect stderrifconfig(_err=">")>"/tmp/ifconfig.errors"# or ifconfig(_err = "/tmp/ifconfig.errors")

輸出迭代fromcmdyimporttailforlineintail(_='test.txt',_iter=True):print(line)

后臺進程

對于要在非塊模式下運行的命令,可能需要使用_bg關鍵字:forlineintail(_='test.txt',_bg=True,_iter=True):print(line)# blockssleep(3)print("...3 seconds later")# doesn't blockp=sleep(3,_bg=True)print("prints immediately!")p.wait()print("...and 3 seconds later")

后臺進程的回調:importtimefromcmdyimportsleepdefcallback(cmdy):print(cmdy.rc)p=sleep(3,_bg=callback)p.wait()# prints 0

烘烤fromcmdyimportjavapicard=java.bake(dict(jar='picard.jar',_sep=' ',_prefix='-'))#picard.SortSam(...)

與sh不同,cmdy保存關鍵字參數,并在烘焙為新命令時更新它們。這使它能夠用新的baked命令替換一些參數。fromcmdyimportlsls=ls.bake(l=True)# or ls = ls(l = True, _bake = True)ls()# ls -l# I don't want -l anymorels(l=False)

注意,非關鍵字參數是不可更新的。ls=ls.bake('-l')ls()# ls -l# Not work, still ls -lls(l=False)

烘焙整個模塊:importcmdycmdy=cmdy(_fg=True)# all commands under new module is running at foreground (stdout = sys.stdout, stderr = stderr)fromcmdyimportlsls()

管道# get the permission columnls(l=True,_pipe=True)|cut(f=1,_fg=True)

子命令fromcmdyimportgitprint(git.branch(v=True))

別名/為命令指定可執行文件的完整路徑fromcmdyimportfc_cache,pythonfc_cache(_exe='fc-cache',vf='~/.fonts/',_prefix='-')# fc-cache -vf ~/.fonts/python(_exe='/home/user/miniconda3/bin/python3',version=True)# /home/user/miniconda3/bin/python3 --version

始終將fc_cache別名設為fc-cache,并將python點設為/home/user/miniconda3/bin/python3,將以下內容添加到~/.cmdy.ini[fc_cache]_exe=fc-cache[python]_exe=/home/user/miniconda3/bin/python3

那么您就不需要再關心路徑了:fromcmdyimportfc_cache,pythonfc_cache(vf='~/.fonts/',_prefix='-')# fc-cache -vf ~/.fonts/python(version=True)# /home/user/miniconda3/bin/python3 --version

配置

cmdy將首先加載默認參數:{'_okcode':0,'_exe':None,'_sep':' ','_prefix':'auto','_dupkey':False,'_bake':False,'_iter':False,'_pipe':False,'_raw':False,'_timeout':0,'_encoding':'utf-8','_bg':False,'_fg':False,'_out':None,'_out_':None,'_err':None,'_err_':None}

然后嘗試加載$HOME/.cmdy.ini、./.cmdy.ini和以CMDY_開頭的環境變量,以便可以用臨時環境變量覆蓋配置。

例如,我希望始終使用原始關鍵字選項:

~/.cmdy.ini[default]_raw: True

ontotator.py:fromcmdyimportoncotatoroncotator(log_name='/path/to/log',...)# oncotator --log_name LOG_NAME ...# you don't have to specify _raw = True any more.

使用環境變量覆蓋設置:exportCMDY_oncotator__raw=False

python oncotator.py

# will run:# oncotator --log-name LOG_NAME ...# ^

歡迎加入QQ群-->: 979659372

推薦PyPI第三方庫

總結

以上是生活随笔為你收集整理的python cmd下载模块_Python cmd包_程序模块 - PyPI - Python中文网的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。