簡體   English   中英

通過Python中的命令行參數編輯文本文件

[英]Editing text file through command line argument in Python

我想通過在Python中通過命令行參數傳遞整數來編輯文本文件。 但是我的代碼無法正常工作,有人可以指出我的錯誤之處。

    import sys, argparse
    def main(argv=None):
    if argv is None:
        argv=sys.argv[1:]
        p = argparse.ArgumentParser(description="Editing omnetpp.ini")
        p.add_argument('arg1', action='store', default= 1, type=int, help="number of clients")
        args = p.parse_args(argv)
        n = args.arg1
        f = open('C:\\Users\Abcd\Desktop\Omnet\omnetpp.ini', 'a')
        for i in range(n):
            f.write('*.voipClient['+str(i)+'].udpApp['+str(i)+'].destAddresses = "voipGateway"\n')
            f.write('*.voipGateway.udpApp['+str(i)+'].destAddresses   = "voipClient['+str(i)+']"\n')
        f.close()

如果通過命令行參數傳遞了整數5,則應在文本文件中添加以下行,這不會發生輸出

*.voipClient[0].udpApp[0].destAddresses = "voipGateway"
*.voipGateway.udpApp[0].destAddresses   = "voipClient[0]"
*.voipClient[1].udpApp[1].destAddresses = "voipGateway"
*.voipGateway.udpApp[1].destAddresses   = "voipClient[1]"
*.voipClient[2].udpApp[2].destAddresses = "voipGateway"
*.voipGateway.udpApp[2].destAddresses   = "voipClient[2]"
*.voipClient[3].udpApp[3].destAddresses = "voipGateway"
*.voipGateway.udpApp[3].destAddresses   = "voipClient[3]"
*.voipClient[4].udpApp[4].destAddresses = "voipGateway"
*.voipGateway.udpApp[4].destAddresses   = "voipClient[4]"

我正在按照以下步驟操作:

  1. 代碼保存在test.py中
  2. 從命令行C:\\ Users \\ Abcd \\ Desktop> python test.py 5

不要在循環中關閉文件,因為一旦關閉就無法對其進行寫操作(實際上,如果您嘗試寫入已關閉的文件對象,則會引發錯誤)。 而是在循環后將其關閉。 另外,要將每個句子放在換行符上,請在字符串末尾添加換行符\\n (按“ ENTER”鍵)。

f = open('C:\\Users\Abcd\Desktop\Omnet\omnetpp.ini', 'a')
for i in range(n):
    f.write('*.voipClient['+str(i)+'].udpApp['+str(i)+'].destAddresses = "voipGateway"\n')
    f.write('*.voipGateway.udpApp['+str(i)+'].destAddresses   = "voipClient['+str(i)+']"\n')
f.close()

編輯

順便說一句,正如Rostyslav Dzinko在評論中所說,定義代碼的方式不是定義主函數的方式。 實際上,請嘗試如下操作(另請參見此SO問題 ):

if __name__ == '__main__':
    p = argparse.ArgumentParser(description="Editing omnetpp.ini")
    p.add_argument('arg1', action='store', default= 1, type=int, help="number of clients")
    args = p.parse_args()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM