函数不返回输出fi

2024-10-02 10:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下python代码,其目的是从输入文本文件中删除空行。它应该返回一个输出文件,删除了所有的空行,但它没有。有什么问题?谢谢你

import sys

def main():
    inputFileName = sys.argv[1]
    outputFileName = sys.argv[2]

    inputFile = open(inputFileName, "r")
    outputFile = open(inputFileName, "w")

    for line in inputFile:
        if "\n" in line:
            removeBlank = line.replace("\n", "")
            outputFile.write(removeBlank)
        else:
            outputFile.write(line)

    inputFile.close()
    outputFile.close()

main()

Tags: 代码in目的closemainsyslineopen
2条回答

目前,您的代码似乎在打开输入文件后立即将其截断。充其量,这可能会在不同的平台上产生不同的结果。在某些平台上,文件可能为空。我认为打开输入文件进行写作是一个打字错误

解决这个问题的更好方法是使用生成器。另外,空行的正确测试是line == '\n',而不是'\n' in line,这将适用于除最后一行之外的所有返回行

def noblanks(file):
    for line in file:
        if line != '\n':
            yield line

您可以这样使用:

with open(inputFileName, "r") as inf, open(outputFilename, 'w') as outf:
    for line in noblanks(inf):
        outf.write(line)

with语句中的上下文管理器将确保您的文件正确关闭,而无需进一步操作

你的代码有很多问题。特别是你用空行检查的情况。人们正确地指出了一些问题

下面是应该工作的解决方案,并生成没有空行的输出文件

import sys

def main():
    inputFileName = sys.argv[1]
    outputFileName = sys.argv[2]
    with open(inputFileName) as inputFile, open(inputFileName, "w") as outputFile:

        for line in inputFile.readlines():
            if line.strip() != '':
                outputFile.write(line)

if __name__ == '__main__':
    main()

相关问题 更多 >

    热门问题