今天在修改数据分析平台的BUG时候,发现两个历史遗留问题。
- 不能加载中文文件
- csv中最后一行都是空行
严重的是第二个问题,因为在写文件的时候都是这样写的
line = "somethings you want to write"+"\n"1
因此,每个文件最后都有一个空行。在前端显示的时候老出现type i is undefined
前端显示文件
但是因为有一个空行就不能分页,因为在遍历的时候,遇到的item都不一样
最后的解决方案是这样的:
- 读取文件
- 直接定位到最后一个字符
- 向上读一个字符
- 判断是否是”\n”
- 执行删除
- 关闭文件
具体的代码如下:
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 23 10:04:25 2017
@author: APAC
"""
import os
f = open("Take.csv","rb+")
f.seek(-1 ,os.SEEK_END)
if f.next() == "\n":
f.seek(-1 ,os.SEEK_END)
f.truncate()
f.close()12345678910111213
Python File truncate() 方法
truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。
实例
以下实例演示了 truncate() 方法的使用:
文件 runoob.txt 的内容如下:
1:www.runoob.com 2:www.runoob.com 3:www.runoob.com 4:www.runoob.com 5:www.runoob.com
循环读取文件的内容:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开文件
fo = open("runoob.txt", "r+")
print "文件名为: ", fo.name
line = fo.readline()
print "读取第一行: %s" % (line)
# 截断剩下的字符串
fo.truncate()
# 尝试再次读取数据
line = fo.readline()
print "读取数据: %s" % (line)
# 关闭文件
fo.close()
以上实例输出结果为:
文件名为: runoob.txt
读取第一行: 1:www.runoob.com
读取数据:
以下实例截取 runoob.txt 文件的10个字节:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开文件
fo = open("runoob.txt", "r+")
print "文件名为: ", fo.name
# 截取10个字节
fo.truncate(10)
str = fo.read()
print "读取数据: %s" % (str)
# 关闭文件
fo.close()
以上实例输出结果为:
文件名为: runoob.txt
读取数据: 1:www.runo