【问题标题】:How to save indention format of file in Python如何在 Python 中保存文件的缩进格式
【发布时间】:2010-10-29 05:10:00
【问题描述】:

我正在保存文件中的所有单词,如下所示:

     sentence = " "
   fileName = sys.argv[1]
   fileIn = open(sys.argv[1],"r")
   for line in open(sys.argv[1]):
      for word in line.split(" "):
         sentence += word

输出时一切正常,除了格式。 我正在移动源代码,有什么办法可以保存缩进?

【问题讨论】:

  • 缩进究竟在什么情况下会消失?
  • 假设我将 .py 文件中的所有文本复制到一个大字符串中。我得到换行符。但是我没有得到缩进。
  • 我通过 POST 将源代码发布到网页(我的)。但是,当它被复制时,只有新行会继续。
  • 用上面的方法看起来是这样。你用“”分割,所以换行符被保留,其余的已经消失了......
  • @robertd:请不要评论您自己的问题。请用新的事实更新您的问题。使问题尽可能清晰和完整,以便我们删除这些愚蠢的 cmets。

标签: python


【解决方案1】:

既然您说要移动源代码文件,为什么不直接复制/移动它们呢?

import shutil
shutil.move(src, dest)

如果你阅读源文件,

fh = open("yourfilename", "r")
content = fh.read()

应该按原样加载文件(带缩进),还是不加载?

【讨论】:

    【解决方案2】:

    Split 删除所有空格:

    >>> a="   a b   c"
    >>> a.split(" ")
    ['', '', '', 'a', 'b', '', '', 'c']
    

    如您所见,生成的数组不再包含任何空格。但是你可以看到这些奇怪的空字符串('')。他们表示有一个空间。要恢复拆分的效果,请使用join(" ")

    >>> l=a.split(" ")
    >>> " ".join(l)
    '   a b   c'
    

    或在您的代码中:

    sentence += " " + word
    

    或者您可以使用正则表达式来获取行首的所有空格:

    >>> import re
    >>> re.match(r'^\s*', "   a b   c").group(0)
    '   '
    

    【讨论】:

      【解决方案3】:

      当您调用 line.split() 时,您会删除所有前导空格。

      将文件读入单个字符串有什么问题?

      textWithIndentation = open(sys.argv[1], "r").read()
      

      【讨论】:

        猜你喜欢
        • 2021-05-03
        • 1970-01-01
        • 2011-06-18
        • 1970-01-01
        • 2017-12-27
        • 2022-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多