第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

需要使用 subprocess 模塊在 python 腳本中運(yùn)行 AWK 命令

需要使用 subprocess 模塊在 python 腳本中運(yùn)行 AWK 命令

GCT1015 2023-12-09 15:36:00
c1 = "'BEGIN{FS = OFS = \",\"}{if(toupper($11) ~ \"DVT\"){$(NF+1) = NR==1 ? \"indication\" : \"DVT\"}else if(toupper($11) ~ \"AFIB\"){$(NF+1) = NR==1 ? \"indication\" : \"AFIB\"}else{$(NF+1) = NR==1 ? \"indication\" : \"TESTING\"}} 1'"print(c1)p1=subprocess.Popen(["awk",c1,"abc.csv"],stdout=outfile)p1.communicate()該命令在 shell 腳本中運(yùn)行良好。所以,命令參數(shù)看起來(lái)不錯(cuò)。但是在運(yùn)行 python 時(shí),我不斷收到錯(cuò)誤:“表達(dá)式中的字符'''無(wú)效?!?
查看完整描述

1 回答

?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊

外部引號(hào)是不必要的。當(dāng)您有 shell 時(shí),需要使用單引號(hào)來(lái)保護(hù) Awk 腳本免受 shell 的影響;但在這里,你沒(méi)有外殼。然后你可以而且也應(yīng)該去掉所有這些反斜杠。


如果您只需要運(yùn)行子進(jìn)程,然后在完成后繼續(xù)您的程序,那么您應(yīng)該更喜歡subprocess.run()裸露。Popen


c1 = '''BEGIN{FS = OFS = ","}

{if(toupper($11) ~ "DVT"){$(NF+1) = NR==1 ? "indication" : "DVT"}

 else if(toupper($11) ~ "AFIB"){$(NF+1) = NR==1 ? "indication" : "AFIB"}

 else{$(NF+1) = NR==1 ? "indication" : "TESTING"}} 

1'''


print(c1)


result = subprocess.run(["awk", c1, "abc.csv"],

    stdout=outfile)

然而,將 Awk 作為 Python 的子進(jìn)程運(yùn)行幾乎總是不必要的。您應(yīng)該能夠?qū)⑵渲貥?gòu)為大致相同數(shù)量的 Python 代碼。


with open("abc.csv") as infile:

    firstline = True

    for line in infile:

        fields = line.rstrip("\n").split(",")

        if firstline:

            added = "indication"

        else:

            ind = fields[10].upper()

            if "DVT" in ind:

                added = "DVT"

            elif "AFIB" in ind:

                added = "AFIB"

            else:

                added = "TESTING"

        fields.append(added)

        outfile.write(",".join(fields) + "\n")

        firstline = False

這有點(diǎn)冗長(zhǎng),但這主要是因?yàn)槲沂褂昧烁呙枋鲂缘淖兞棵Q(chēng)。如果您的輸入文件確實(shí)是一個(gè) CSV 文件,csvPython 標(biāo)準(zhǔn)庫(kù)中的模塊可以方便地替換分割邏輯等,盡管它隨后引入了自己的一些其他特性。如果您必須處理 CSV 中的引號(hào)逗號(hào)等,那么這就是它真正增加價(jià)值的地方。


總而言之,Awk更簡(jiǎn)潔,但那是因?yàn)樗鼘?zhuān)業(yè)。將其嵌入到 Python 代碼中的主要缺點(diǎn)是讀者必須了解兩種語(yǔ)言才能理解代碼(盡管避免外部過(guò)程也總是好的)。我冒昧地猜測(cè),您收到了這段 Awk 代碼,但沒(méi)有任何解釋它是如何工作的,或者如果它損壞了如何修復(fù)它......?


查看完整回答
反對(duì) 回復(fù) 2023-12-09
  • 1 回答
  • 0 關(guān)注
  • 203 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)