【问题标题】:Python: Echoing to a File (like Bash)Python:回显到文件(如 Bash)
【发布时间】:2013-05-31 12:57:49
【问题描述】:

我在这里有一个简单的 bash 命令,用于我正在用 Python 重写的脚本,我进行了很多搜索,但没有找到一个简单的答案。我正在尝试将 Print 的输出回显到文件中,确保没有换行符并且我可以将变量传递给它。这里只是一个小sn-p(有很多这样的行):

echo "    ServerName  www.${hostName}" >> $prjFile

现在我知道它最终会看起来像:

print ("ServerName www.", hostName) >> prjFile

对吗?但这不起作用。请注意,这是在 Python 2.6 中(因为将运行此脚本的机器正在使用该版本,并且还有其他依赖于坚持该版本的依赖项)。

【问题讨论】:

    标签: python bash echo output


    【解决方案1】:

    语法是;

    print >>myfile, "ServerName www.", hostName,
    

    其中 myfile 是以"a" 模式打开的文件对象(用于“追加”)。

    尾随逗号可防止换行。

    您可能还想使用 sys.stdout.softspace = False 来防止 Python 在 print 的逗号分隔参数之间添加空格,和/或将内容打印为单个字符串:

    print >>myfile, "ServerName www.%s" % hostName,
    

    【讨论】:

      【解决方案2】:

      你可以尝试一个简单的:

      myFile = open('/tmp/result.file', 'w') # or 'a' to add text instead of truncate
      myFile.write('whatever')
      myFile.close()
      

      在你的情况下:

      myFile = open(prjFile, 'a') # 'a' because you want to add to the existing file
      myFile.write('ServerName www.{hostname}'.format(hostname=hostname))
      myFile.close()
      

      【讨论】:

      • 请注意file.write() 不添加换行符。
      • {} 只是将变量推入的方式,最终变量 hostName 将只是 www.hostName.com 或其他。
      • 我在@mgilson 建议中添加了它,以便可以连接变量。
      • $ 似乎是错误的,我收到语法错误。那会是%吗?没关系,我明白了:)谢谢
      • 要扩展 @IgnacioVazquez-Abrams 的评论 echo 会在其内容中附加一个换行符,而 python 的 fp.write() 方法则不会。如果你想用 write 复制回显,请务必在末尾添加一个换行符。
      猜你喜欢
      • 1970-01-01
      • 2014-08-15
      • 2013-09-23
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      相关资源
      最近更新 更多