我一直坚持为什么我的代码在将文本写入文件之前打印空白行。我正在做的是从压缩文件夹中读取两个文件并将文本写入新的文本文件。我在文件中得到了预期的结果,除了文件的第一行有一个空行。
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 test #2
this is test #2
有什么想法吗?
谢谢!
答案 0 :(得分:3)
我的猜测是zf.namelist()
中的第一个文件不包含任何内容,因此您跳过该文件的for line in words
循环,然后执行new_file.write('\n')
。如果没有看到你正在循环的文件,很难说出来;也许添加一些打印文件名称和一些信息的调试语句,例如他们的大小。