Python知识点——文件和数据格式化

简介: Python知识点——文件和数据格式化

文件的打开

文件的打开模式
文件打开模式 描述
‘r’ 只读模式,默认值,如果文件不存在,返回FileNotFoundError
'w' 覆盖写模式,文件不存在则创建,存在则完全覆盖
'x' 创建写模式,文件不存在则创建,存在则返回FileExistsError
‘a’ 追加写模式,文件不存在则创建,存在则在文件最后追加内容
‘b’ 二进制文件模式
‘t’ 文本文件模式,默认值
‘+’

与r/w/a一同使用,在原功能基础上增加同时读写功能

文件的路径

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

注:与源文件同目录,可省略路径

“D:/PYE/f.txt”        “./PYE/f.txt”

”D:\\YE\\f.txt“        "f.txt"

文件打开示例

f = open("f.txt")                            文本形式、只读模式、默认值

f = open("f.txt","rt")                      文本形式、只读模式、同默认值

f = open("f.txt","w")                      文本形式、覆盖写模式

f = open("f.txt","a+")                  文本形式、追加写模式+ 读文件

f = open("f.txt","x")                    文本形式、创建写模式

f= open("f.txt","b")                       二进制形式、只读模式

f = open("f.txt","wb")                 二进制形式、覆盖写模式


文件的关闭

<变量名>.close()

#文本形式打开文件

tf = open("f.txt","rt")

print(tf.readline())

tf.close()

#二进制形式打开文件

bf = open("f.txt","rb")

print(bf.readline())

bf.close()

文件内容读取

操作方法 描述
<f>.read(size=-1)

读入全部内容,如果加入参数size,表示读入前size长度的内容

>>>s = f.read(2)

中国

<f>.readline(size=-1)

读入一行内容,如果加入参数size,表示读入改行前size长度的内容

>>>s = f.readline()

中国是一个伟大的国家!

f>.readlines(hint=-1)

读入文件所有行,以每行为元素形成列表如果给出hint,读入文件内对应字节数hint的当前行为止

>>>s = f.readlines()

['中国是一个伟大的国家! ]

文件的读取

方法一:一次性读入

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.write("中国是一个伟大的国家!")

<f>.writelines(lines)

 将一个元素全为字符串的列表写入文件

  >>>ls = ["中国", "法国", "美国"]

  >>>f.writelines(ls)

 中国法国美国

f>.seek(offset[,whence])

改变当前文件操作指针的位置,offset开始的偏移量,whence可选,默认为0,含义如下:

0-文件开头;

1- 当前位置;

2- 文件结尾

>>>f.seek(0)        #回到文件开头

例题:写入一个字符串列表的两种方法

fo = open("output .txt","w+“)

ls = ["中国","法国","美国"]


fo.writelines(ls)

for line in fo:

print(line)


fo.close()


#没有任何输出


fo = open("output .txt","w+")


ls = ["中国","法国","美国"]


fo.writelines(ls)


fo.seek(0)

for line in fo:


       print(line)


fo.close()


#输出中国法国美国

例题

自动轨迹绘制

有如下data.txt文件

链接:https://pan.baidu.com/s/1Rt5PD5OPwQpyzJwOoA35Yg 

提取码:ghoc

以第一行为例:300 :行进距离        0:转向判断(0:左转,1:右转)        144:转向角度  

1,0,0:RGB三个通道颜色

#AutoTraceDraw.py
import turtle as t
t.title('自动轨迹绘制')
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])

能够绘制以下图形,大家可以复制粘贴看看绘制流程:

给出相应星座,输出相应星座日期:

链接:https://pan.baidu.com/s/1Y-cGAmThpFfqpygCs6zd0A 

提取码:xtez

import pandas as pd
 
with open('D:\\SunSign.csv',encoding='UTF-8') as txt:
    f=txt.read()
names=[]
datas=[]
 
for line in f.split("\n"):
    line=line.replace("\n","")
    datas.append(line.split(","))
    names.append(line.split(",")[0])
    txt.close()
 
print("输入星座:")
strList=[]
while(True):
    str=input()
    if str=='exit':
        break
    else:
        strList.append(str)
 
for str in strList:
    if str in names:
        print("{}的生日位于{}-{}之间".format(chr(eval(datas[names.index(str)][3])), datas[names.index(str)][1],datas[names.index(str)][2]))
    else:
        print("输入星座名称有误!")
 

输入:

输出:

若输入错误,得到结果为:

构造词云:

使用词云之前要用cmd命令行下载wordcloud

txt文件如下:

链接:https://pan.baidu.com/s/1y6By4u6_3nmy7PBC6POxeQ 

提取码:jo9p

代码如下:

#GovRptWordCloudv1.py
import jieba
import wordcloud
f = open("D:\\新时代中国特色社会主义.txt", "r", encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t) #用 jieba 库对文件内容进行中文分词,将分词结果列表赋给变量 ls
txt = " ".join(ls)#将分词结果列表 ls 中的词语用空格连接成一个字符串,并赋给变量 txt
w = wordcloud.WordCloud(   font_path = "msyh.ttc",\
    width = 1000, height = 700, background_color = "white", \
    )
w.generate(txt)#根据文本内容生成词云图像数据。
w.to_file("D:\\grwordcloud.png")#将生成的词云图像数据保存为 "grwordcloud.png" 文件

代码结果如下:

目录
相关文章
|
3天前
|
移动开发 Unix Linux
Python 遍历文件每一行判断是否只有一个换行符详解
**Python 检查文件每行换行符:** 文章探讨了在Python中验证文件每行是否仅含一个换行符的需求。通过提供代码示例,展示了如何打开文件,遍历行,判断行尾的换行情况。基础实现检查`\n`,扩展版考虑了`\r\n`,并可选地将结果保存至新文件。这些功能有助于确保数据格式规范。
14 0
|
3天前
|
数据采集 Web App开发 数据挖掘
使用Python和BeautifulSoup轻松抓取表格数据
使用Python和BeautifulSoup,结合代理IP,可以从网页抓取表格数据,如中国气象局的天气信息。通过requests库发送HTTP请求,BeautifulSoup解析HTML提取表格。安装必要库后,设置代理IP,发送请求,解析HTML找到表格,提取数据并存储。通过Pandas进行数据分析,如计算平均气温。这种方法让数据抓取和分析变得更加便捷。
使用Python和BeautifulSoup轻松抓取表格数据
|
3天前
|
数据采集 Web App开发 数据处理
一步步教你用Python Selenium抓取动态网页任意行数据
使用Python Selenium爬取动态网页,结合代理IP提升抓取效率。安装Selenium,配置代理(如亿牛云),设置User-Agent和Cookies以模拟用户行为。示例代码展示如何使用XPath提取表格数据,处理异常,并通过隐式等待确保页面加载完成。代理、模拟浏览器行为和正确配置增强爬虫性能和成功率。
一步步教你用Python Selenium抓取动态网页任意行数据
|
4天前
|
Python Windows
在 Windows 平台下打包 Python 多进程代码为 exe 文件的问题及解决方案
在使用 Python 进行多进程编程时,在 Windows 平台下可能会出现将代码打包为 exe 文件后无法正常运行的问题。这个问题主要是由于在 Windows 下创建新的进程需要复制父进程的内存空间,而 Python 多进程机制需要先完成父进程的初始化阶段后才能启动子进程,所以在这个过程中可能会出现错误。此外,由于没有显式导入 Python 解释器,也会导致 Python 解释器无法正常工作。为了解决这个问题,我们可以使用函数。
13 5
|
4天前
|
Python
Python列表推导式是一种简洁的创建新列表的方式,它允许你在一行代码中完成对数据的操作和转换
【6月更文挑战第19天】Python列表推导式是创建新列表的简洁语法,它在一行内处理数据。表达式如`[expr for item in iterable if cond]`,其中`expr`是对元素的操作,`item`来自`iterable`,`if cond`是可选过滤条件。例如,将数字列表平方:`[x**2 for x in numbers]`。嵌套列表推导处理复杂结构,如合并二维数组:`[[a+b for a,b in zip(row1, row2)] for row1, row2 in zip(matrix1, matrix2)]`。简洁但勿过度复杂化。
12 5
|
3天前
|
存储 数据安全/隐私保护 计算机视觉
Python教程:一文了解从Bytes到Bits的数据转换
在Python编程中,处理数据时经常需要在字节(bytes)和位(bits)之间进行转换。这种转换在网络通信、数据加密、图像处理等领域尤为常见。本文将详细介绍如何在Python中进行字节与位之间的转换,并提供一个实用的功能:如何在指定的位位置替换位数据。
15 4
|
4天前
|
Python
Python语言提供了多种输出格式化的方法,这些方法随着时间的推移和版本的更新而发展
【6月更文挑战第19天】Python格式化方法包括过时的`%`操作符,`str.format()`,推荐的f-string(Python 3.6+)和Template strings。f-string提供最佳的可读性和性能,`str.format()`是通用的,而`%`不推荐使用。模板字符串用于特定场景。对于旧版Python,使用`str.format()`或`%`。
12 4
|
4天前
|
Python
Python+Jinja2实现接口数据批量生成工具
在做接口测试的时候,我们经常会遇到一种情况就是要对接口的参数进行各种可能的校验,手动修改很麻烦,尤其是那些接口参数有几十个甚至更多的,有没有一种方法可以批量的对指定参数做生成处理呢。
13 3
|
3天前
|
IDE 前端开发 开发工具
怎么在isort Python 代码中的导入语句进行排序和格式化
`isort` 是一个Python工具,用于自动排序和格式化代码中的导入语句,提高代码整洁度和可读性。它支持自动排序、保留空白和注释、自定义排序规则、与多种编辑器集成以及命令行使用。安装`isort`可通过`pip install isort`,使用时可直接在Python代码中导入或通过命令行处理文件。示例展示了如何在代码中使用`isort`进行导入排序,包括基本排序、自定义设置和处理多个文件。`isort`适用于标准库、第三方库和自定义模块的导入排序,还可忽略特定导入,并能与IDE和编辑器插件集成,提升开发效率。
|
1天前
Python---格式化
Python---格式化