【问题标题】:Python-Fab not reading value from filePython-Fab 未从文件中读取值
【发布时间】:2019-04-26 22:24:31
【问题描述】:

sed 命令未从文件中读取值。

with open('file.txt') as f:
 content = f.read()
subprocess.call("sed -i '/name/s/$/%s /' copy_vmlist" % content ,shell=True)

上面一个不起作用。sed 命令应该在 copy_vmlist 中搜索“名称”,并将 file.txt 的内容(jega)附加到下一个 colmun。

Content of file.txt:
jega

Content of copy_vmlist:
Age
name
degree

Expected output in copy_vmlist:
Age
name jega
degree

【问题讨论】:

    标签: python sed subprocess fabric


    【解决方案1】:

    问题在于您的 sed 命令参数。我猜你想在“copy_vmlist”文件中将“name”字符串替换为“jega”。试试看:

    #!/usr/bin/python
    import subprocess
    
    with open('file.txt') as f:
      content = f.read().strip()
      cmd = "sed -i 's/name/%s/' copy_vmlist" % content
      subprocess.call(cmd ,shell=True)
    

    编辑:

    编辑后,你需要这个:

    cmd = "sed -i 's/name/name %s/' copy_vmlist" % content
    

    【讨论】:

    • 感谢您的回复。我已经编辑了我的问题。请检查!如果您能帮助我找到解决方案,将不胜感激!
    • 解决方案比您想象的要容易。我已经编辑了答案。祝你有美好的一天:)
    • 不走运!!不工作它显示相同的错误'sed:-e表达式#1,字符22:未终止的`s'命令'。然后在输出中不需要大写 N 的名称。那是拼写错误。
    • 哈哈,比源中的“名称”替换为“名称”。但是我又编辑了,试试看:)
    • 我试过了,但是得到了同样的错误:('sed: -e expression #1, char 22: unterminated `s' command'。每当我从文件中传递值时,都会收到这个错误。请建议任何解决方案!!!
    猜你喜欢
    • 2017-07-22
    • 2019-11-07
    • 1970-01-01
    • 2023-03-30
    • 2019-04-22
    • 1970-01-01
    • 2013-08-23
    • 2015-06-25
    • 2018-04-02
    相关资源
    最近更新 更多