文件和数据处理

dd一.文件的理解

文件时数据的抽象和集合

1.文件是储存在辅助储存器上的数据序列

2.文件是数据储存的一种形式

3.文件的展现形态:文本文件和二进制文件(文本文件和二进制文件只是文件的展示形式,本质上所有文件都是二进制形式储存)

文本文件

1.由单一特定编码组成的文件,如UTF-8编码

2.由于存在编码,也被看成是储存着的长字符串

3.适用于例如:.txt文件,.py文件

二进制文件

文件是数据的抽象和集合

1.直接由比特0和1组成,没有统一字符编码

2.一般存在二进制0和1的组织结构,即文件格式

3.适用于例如:.png文件,.avi文件

文件的打开关闭

a = open( , )
a.close()

a.read(size)

a.readline(size)

a.readlines(hint)

a.write(s)

a.writelines(lines)

a.seek(offset)

文件的打开

<变量名> = open(<文件名>, <打开模式>)

遍历全文本:方法一(一次读入,统一处理,如果特别大就不友好)

fname = input("请输入要打开的文件名称:")
fo = open(fname, "r")
txt = fo.read()
#对全文txt处理
fo.close()

遍历全文本:方法二(按数量读入,逐步处理对于大文件更加可行和有效)

fname = input()
fo = open(fname, "r")
txt = fo.read(2)
while txt != "":
    #对txt进行处理
    txt = fo.read(2)
fo.close()

文件的逐行操作

逐行遍历文件:方法一(一次读入,分行处理)

fname = input("请输入要打开的文件名称:")
fo = open(fname, "r")
for line in fo.readlines():
    print(line)
fo.close()

逐行遍历文件:方法二(分行读入,逐行处理)

fname = input("请输入要打开的文件名称:")
fo = open(fname, "r")
for line in fo:
    print(line)
fo.close()

数据文件写入

<f>.write(s)向文件写入一个字符串或字节流

<f>.writelines(lines)将一个元素全为字符串的列表写入文件

<f>.seek(offset) 改变当前文件操作指针的位置,offset含义:0-文件开头;1-当前位置;2-文件结尾
fo = open("output.txt", "w+")
ls  = ["中国", "法国", "美国"]
fo.writelines(ls)
fo.seek(0)#写入ls之后将指针返回文件最开始的地方并从这开始进行全文的遍历
for line in fo:
    print(line)
fo.close()

 自动轨迹绘制

基本思路

1.定义数据文件格式(接口)

2.编写程序,根据文件接口解析参数绘制图形

3.编制数据文件

#AutoTraceDraw.py
import turtle as t
t.tilt('自动轨迹绘制')
t.setup(800, 600, 0, 0)
t.pencolor("red")
t.pensize(5)
#数据读取
datals = []
f = open("data.txt")
for line in f:
    line = line.replace("\n", "")
    datals.append(list(map(eval, line.split(","))))
f.close()
#自动绘制
for i in range(len(datals)):
    t.pencolor(datals[i][3], datals[i][4], datals[i][5])
    t.fd(datals[i][0])
    if datals[i][1]:
        t.right(datals[i][2])
    else:
        t.left(datals[i][2])

自动化思维:数据和功能分离,数据驱动的自动运行

接口化设计:格式化接口设计,清晰明了

二维数据应用:应用维度组织数据,二维数据最常用

扩展接口设计,增加更多控制接口

扩展功能设计,增加弧形等更多功能

扩展应用需求,发展自动轨迹绘制到动画绘制

一维数据:由对等关系的有序或无序数据构成,采用线性方式组织,对应列表,数组和集合等

二维数据:由多个一维数据构成,是一维数据的组合形式,表格是典型的二维数据

多维数据:由一维或二维数据在新维度上扩展形成

txt = open(fname).read()
ls = txt.split()
f.close()

txt = open(fname).read()
ls = txt.split("$")
f.close()

ls = ['中国', '美国', '日本']
f = open(fname, 'w')
f.write(' '.join(ls))
f.close()


ls = ['中国', '美国', '日本']
f = open(fname, 'w')
f.write('$'.join(ls))

CSV格式的文件

#从CSV格式的文件中读入数据
fo = open(fname)
ls = []
for line in fo:
    line = line.replace("\n", "")
    ls.append(line.split(","))
fo.close()

# 将数据写入CSV格式的文件
ls  = [[], [], []] #二维列表
f = open(fname, 'w')
for item in ls:
    f.write(','.join(item) + '\n')
f.close()

二维数据的逐一处理

ls = [[1,2], [3,4], [5,6]] #二维列表
for row in ls:
    for column in row:
        print(column)
        

wordcloud库把词云当作一个WordCloud对象

wordcloud.WordCloud ()代表一个文本对应的词云

可以根据文本中词语出现的频率等参数绘制词云

绘制词云的形状,尺寸和颜色都可以设定

常规矩形词云

#GovRptWordCloudv1.py
import jieba
import wordcloud
f = open("新时代中国特色社会主义.txt", "r", encoding="utf-8")

t = f.read()
f.close()
ls = jieba.lcut(t)

txt = " ".join(ls)
w = wordcloud.WordCloud( \
    width = 1000, height = 700,\
    background_color = "white",
    font_path = "msyh.ttc"    
    )
w.generate(txt)
w.to_file("grwordcloud.png")

  不规则图形词云

#GovRptWordCloudv2.py
import jieba
import wordcloud
from scipy.misc import imread
mask = imread("chinamap.jpg")
excludes = { }
f = open("新时代中国特色社会主义.txt", "r", encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)
w = wordcloud.WordCloud(\
    width = 1000, height = 700,\
    background_color = "white",
    font_path = "msyh.ttc", mask = mask
    )
w.generate(txt)
w.to_file("grwordcloudm.png")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花小智

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值