python - 创建文件时删除空行
问题描述
我有一个为 CSV 文件的每一行创建文件的脚本。但是,不知何故,一个空行被添加到新创建的文件的末尾。
代码:
with open(fullCSV, 'r') as f:
reader = csv.reader(f)
csvList = list(reader)
for item in csvList:
if not os.path.exists(tempLoc + item[0]):
os.mkdir(tempLoc + item[0])
with open(tempLoc + item[0] + r"\prm.263", "w+") as f:
csv.writer(f).writerow(item[1:])
f.close
有什么方法可以去掉创建时的空白行吗?
提前致谢
编辑:
解决方案
问题是 csv 模块。您可以看到,无法从writerow()
. 毕竟, csv 模块假设您可以重复写入行:
writer.writerow(row1)
writer.writerow(row2)
...
因此,必须在每一行输出上发出一个换行符才能使其工作。但是您的问题是删除文件末尾的换行符。所以你可以考虑在两者之间增加一个额外的步骤:(使用 Python 3 io 模块)
with open(tempLoc + item[0] + r"\prm.263", "w+") as f:
g = io.StringIO()
csv.writer(g).writerow(item[1:])
f.write(g.getvalue().rstrip())
上面,我们创建了一个StringIO
类似文件的对象,csv.writer()
并要求写入者写入缓冲区而不是文件。完成所有行的写入后,我们读取缓冲区g.getvalue()
,然后在最后去除空格(即换行符),然后写入文件。
如果您有兴趣,这就是 csv 模块将为您提供的每一行的内容:
>>> import io
>>> f = io.StringIO()
>>> import csv
>>> csv.writer(f).writerow([1,2,3,4])
9
>>> f.getvalue()
'1,2,3,4\r\n'
推荐阅读
- android - 在本机反应中将音频音量提高 100% 以上
- c++ - c++ clr 中的 windows.h 使用 Visual Studio 2019 形成应用程序
- c# - 如何使用 C# 根据批量大小拆分 Excel 工作表?
- command-line - 复制到终端 org.kde.konsole 时出现额外的空行
- java - Ambari Web 构建失败并出现错误:无法执行目标 com.github.eirslett:frontend-maven-plugin:1.4:install-node-and-yarn
- android - 来自片段中变量的数据绑定,android?
- python - 使用 BS4 循环提取 HTML 数据
- c++ - C++ 程序什么都不做,但 Valgrind 显示内存分配
- python - Python string.split() 如何忽略空格
- angular - Angular - 在基本的 HTTP POST 请求和承诺中,可观察对象对我有好处吗?