Python 函数不返回输出文件
我有以下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
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是个好主意