Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数不返回输出文件_Python_Python 3.x - Fatal编程技术网

Python 函数不返回输出文件

Python 函数不返回输出文件,python,python-3.x,Python,Python 3.x,我有以下python代码,其目的是从输入文本文件中删除空行。它应该返回一个输出文件,其中删除了所有空行,但它没有。有什么问题?谢谢大家! import sys def main(): inputFileName = sys.argv[1] outputFileName = sys.argv[2] inputFile = open(inputFileName, "r") outputFile = open(inputFileName, "w") for

我有以下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()

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

解决此问题的更好方法是使用发电机。此外,空行的正确测试是line='\n',而不是line中的'\n',这将适用于所有返回的行,可能最后一行除外

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()

outputFile=openinputFileName,w?假设“\n”是您的换行符,这是特定于操作系统的,您要删除所有换行符,而不仅仅是空行,请尝试取出if-else子句并放入if-not-line.isspace:outputFile.writeline;还有斯奈夫特尔所说的,写信给正确的人file@Chris_RandsPython应该解决任何操作系统问题,但使用isspace是个好主意