我不明白为什么我的代码在将文本写入文件之前打印一个空行。我正在做的是从压缩文件夹中读取两个文件并将文本写入新的文本文件。我在文件中得到了预期的结果,除了文件的第一行有一个空行。
def test():
if zipfile.is_zipfile(r'C:\Users\test\Desktop\Zip_file.zip'):
zf = zipfile.ZipFile(r'C:\Users\test\Desktop\Zip_file.zip')
for filename in zf.namelist():
with zf.open(filename, 'r') as f:
words = io.TextIOWrapper(f)
new_file = io.open(r'C:\Users\test\Desktop\new_file.txt', 'a')
for line in words:
new_file.write(line)
new_file.write('\n')
else:
pass
zf.close()
words.close()
f.close()
new_file.close()
new_file 中的输出(第一个“This is a test line...”之前有一个空行)
This is a test line...
This is a test line...
this is test #2
this is test #2
有什么想法吗?
谢谢!
我的猜测是
zf.namelist()
中的第一个文件不包含任何内容,因此您跳过该文件的 for line in words
循环,只执行 new_file.write('\n')
。如果不查看正在循环的文件,就很难判断;也许添加一些打印出文件名和一些信息的调试语句,例如他们的大小。