python的文件操作

2023-11-19

一、文件的基本操作

1.读文件read

f=open(filename,'r',encoding='utf-8')
data=f.read() # 读文件
f.close() # 关闭文件


# 1.绝对路径的易错点  文件路径中'\'前要加转义字符   或者  使用r使转义字符失效
f=open('c:\\windows\\users\\first.txt','r',encoding='utf-8')
f=open(r'c:\windows\users\first.txt','r',encoding='utf-8')

# 2.要确保路径存在,否则会报错 filenotfounderror 怎么判断路径是否存在
import os #导入操作系统判断路径是否存在
exists = os.path.exists('c:\\windows\\users\\first.txt') # exists是bool类型

2.写文件write

f=open(filename,'w',encoding='utf-8')
data=f.write() # 写文件
f.close() # 关闭文件

# 1.w模式的特点: 先清空文件,再写入文件
# 2.a模式的特点,在文件的末尾写入

3.文件的打开模式(要注意游标的位置,游标的位置会随着文件的读写进行移动)

在这里插入图片描述

# 1.移动光标位置
f.seek(n)
# 将游标位置重置为起始位置
f.seek(0) 



# 2.获取光标位置
p=f.tell()

# 3.strip()默认是移除字符串首尾的空格或换行符  也可通过strip("需要移除的字符序列")将需要移除的字符序列移除
line.strip()   


# 4.读文件的一些操作
# read()读所有
data=f.read()
# read(n) 读n个字符(r模式,一个中文字用3个字节表示)或n个字节(rb模式)
f.read(1)
# readline()读一行
str=f.readline()
# readlines() 按行读取,结果是列表类型,每行作为列表的一个元素
list_data=f.readlines()
# 循环读大文件 
for line in f:
	print(line.strip())

4.with上下文管理器

# 使用上下文管理器不需要再对文件进行关闭操作
with open(filename,'r',encoding='utf-8') as f: 
 pass

5.练习题

# 根据要求修改文件 将文件中的河南省替换为123
filename = "E:/file/2011年1月销售数据.txt"
with open(filename, 'r', encoding='utf-8') as readfile, open(r'update.txt', 'w', encoding='utf-8') as newfile:
    for line in readfile:
        new_line = line.replace("河南省", '123')
        newfile.write(new_line)
# 重命名文件
import shutil
shutil.move("update.txt", "2011年1月销售数据.txt")

二、操作excel格式的文件

1.打开excel文件 新建excel文件

from openpyxl import workbook ,load_workbook
wb = workbook.Workbook()   # 创建excel 且默认会创建一个Sheet
wb = load_workbook('E://file//11月11日名单.xlsx') # 打开excel

sheet相关操作

# 1.获取excel中所有sheet的名称
"""
print(wb.sheetnames)   # ['Sheet1', 'Sheet2', 'Sheet3']
"""

# 2.选择sheet 基于名称 基于索引
"""
sheet = wb['Sheet1']
"""

"""
sheet = wb.worksheets[0]
value = sheet.cell(1, 1).value  # 读第一行第一列
print(value)
"""

# 3.循环所有的sheet 基于名称 基于索引
"""
for name in wb.sheetnames:
    sheet = wb[name]
    cell= sheet.cell(1,1)
    print(cell.value)
"""

"""
for sheet in wb.worksheets:
    cell= sheet.cell(1, 1)
    print(cell.value)
"""

"""
for sheet in wb:
    cell = sheet.cell(1,1)
    print(cell.value)
"""

2.读单元格内容

# 读单元格的内容,先获取shell
sheet = wb.worksheets[0]

# 1.读n行n列的单元格
"""
cell = sheet.cell(1, 1)
print(cell.value)
"""

# 2.获取某个单元格
"""
cell = sheet['A2']
print(cell.value)
cell = sheet['D4']
print(cell.value)
"""

# 3.读第n行所有单元格
"""
for cell in sheet[1]:
    print(cell.value)
"""

# 4.输出所有行的数据
"""
for row in sheet.rows:
    print(row[0].value,row[1].value) # 输出第一和第二列  也就是输出前两列的元素
"""

# 5.输出所有列的数据
"""
for col in sheet.columns:
    print(col[0].value) #输出每列的第一个元素  也就是输出第一行的元素
"""

3.读合并单元格

在这里插入图片描述

from openpyxl import workbook ,load_workbook
wb =load_workbook('E://file//11月11日名单.xlsx')  # 打开excel
print(wb.sheetnames)   # ['Sheet1', 'Sheet2', 'Sheet3']

# 读合并单元格,单元格的类型
sheet=wb.worksheets[2]
for row in sheet.rows:
    print(row[0],row[0].value)
'''
输出结果:
<Cell 'Sheet3'.A1> 部门名称
<Cell 'Sheet3'.A2> 研究生院
<MergedCell 'Sheet3'.A3> None
<MergedCell 'Sheet3'.A4> None
<MergedCell 'Sheet3'.A5> None
<MergedCell 'Sheet3'.A6> None
<MergedCell 'Sheet3'.A7> None
<MergedCell 'Sheet3'.A8> None
<MergedCell 'Sheet3'.A9> None
<MergedCell 'Sheet3'.A10> None
<MergedCell 'Sheet3'.A11> None
<MergedCell 'Sheet3'.A12> None
<MergedCell 'Sheet3'.A13> None
'''

4.写Excel操作

from openpyxl import load_workbook
wb=load_workbook('E://file//11月11日名单.xlsx')
sheet=wb.worksheets[2]

# 修改某一单元格的值 方法1
cell=sheet.cell(1,1)
cell.value='这里是新名字'
wb.save('E://file//1.xlsx')

# 修改某一单元格的值 方法2
sheet['A1']='开始'
wb.save('E://file//2.xlsx')

# 修改某些单元格的值 
cell_list = sheet['C1':'D2']
i=0
for row in cell_list:
    i=i+1
    j=0
    for cell in row:
        cell.value=i+j
        j=j+1
    wb.save('E://file//3.xlsx')

最后修改某些单元格的值的效果:
在这里插入图片描述

5.写入公式 SUM()

sheet['F14']='=SUM(F2:F13)'
wb.save('E://file//4.xlsx')

在这里插入图片描述

6.文件的绝对和相对路径

import os

# 获取当前文件的上级目录
base_dir=os.path.dirname(os.path.abspath(__file__))
# 路径拼接
file_path=os.path.join(base_dir,'dir1','filename')

补充:python项目打包
1.安装第三方软件 在线安装方式 pip install PyInstaller
2.执行打包操作 pyinstaller -F 22cqqCode\PycharmProjects\pythonProject\studentsys\stusystem.py
3.可执行文件保存到了C:\Users\86136\dist\路径下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python的文件操作 的相关文章

  • 使用 Python 编辑 RTF 文件

    也许这是一个愚蠢的问题 但我不明白 所以道歉 我有一个 RTF 文档 我想更改它 例如 有一个表 我想复制一行并以面向对象的方式更改代码中第二行中的文本 我认为 pyparsing 应该是可行的方法 但我摆弄了几个小时但没有明白 我没有提供
  • Python 和 Numpy 是 nan 和 set

    我在使用 Python 的 Numpy set 和 NaN 非数字 时遇到了不可预测的行为 gt gt gt set np float64 nan np float64 nan set nan nan gt gt gt set np flo
  • 在PyGI中获取窗口句柄

    在我的程序中 我使用 PyGObject PyGI 和 GStreamer 在 GUI 中显示视频 该视频显示在Gtk DrawingArea因此我需要获取它的窗口句柄realize 信号处理程序 在 Linux 上 我使用以下方法获取该句
  • Tkinter 菜单删除项

    如何删除任何菜单项 例如我想删除 播放 self menubar Menu self root self root config menu self menubar self filemenu2 Menu self menubar self
  • 将 yerr/xerr 绘制为阴影区域而不是误差线

    在 matplotlib 中 如何将误差绘制为阴影区域而不是误差条 例如 而不是 忽略示例图中各点之间的平滑插值 这需要进行一些手动插值 或者只是获得更高分辨率的数据 您可以使用pyplot fill between https matpl
  • 如何使用 python 的 http.client 准确读取一个响应块?

    Using http client在 Python 3 3 或任何其他内置 python HTTP 客户端库 中 如何一次读取一个分块 HTTP 响应一个 HTTP 块 我正在扩展现有的测试装置 使用 python 编写 http clie
  • 为什么第二个 request.session cookies 返回空?

    我想使用 requests Session post 登录网站 但是当我已经登录主页 然后进入帐户页面时 看来cookies还没有保存 因为cookies是空的 而且我无法进入正确的帐户页面 import requests from bs4
  • 如何获取numpy.random.choice的索引? - Python

    是否可以修改 numpy random choice 函数以使其返回所选元素的索引 基本上 我想创建一个列表并随机选择元素而不进行替换 import numpy as np gt gt gt a 1 4 1 3 3 2 1 4 gt gt
  • 如何在 Python 中的函数入口、内部和退出处进行日志记录

    我希望能够使用 Python 日志记录工具在我的代码中进行简单且一致的日志记录 我能够执行以下操作 我希望所有现有 未来的模块和函数都有 输入 和 完成 日志消息 我不想添加相同的代码片段来定义日志记录参数 如下所示don t want t
  • 在Python中读取tiff标签

    我正在尝试用 Python 读取 tiff 文件的标签 该文件是 RGB 的uint16每个通道的值 我目前正在使用tifffile import tifffile img tifffile imread file tif 然而 img是一
  • Python MySQL 操作错误:1045,“用户 root@'localhost' 的访问被拒绝

    我试图通过以下方式从我的 python 程序访问数据库 db mysql connect host localhost user Max passwd maxkim db TESTDB cursor db cursor 但是 我在第一行代码
  • 更改QLineEdit的ClearButton图标

    我想在Windows 10 1909 64位 上的Python 3 8和PyQt5 5 15 0 上更改我的QLineEdit的ClearButton图标 稍后我想在Linux上运行代码 我尝试应用此处找到的代码 如何在 QLineEdit
  • Python“非规范化”unicode 组合字符

    我正在寻找标准化 python 中的一些 unicode 文本 我想知道是否有一种简单的方法可以在 python 中获得组合 unicode 字符的 非规范化 形式 例如如果我有序列u o xaf i e latin small lette
  • Jupyter 笔记本中未显示绘图图表

    我已经尝试解决这个问题几个小时了 我按照上面的步骤操作情节网站 https plot ly python getting started start plotting online并且图表仍然没有显示在笔记本中 这是我的情节代码 color
  • 为什么在Python解释器中输入_会返回True? [复制]

    这个问题在这里已经有答案了 我的翻译行为非常奇怪 gt gt gt True gt gt gt type True
  • 为什么这个 if 语句会导致语法错误

    我正在尝试设置一个 elif 语句 如果用户按下 Enter 键 代码将继续 但是我不断遇到语法错误 GTIN 0 while True try GTIN int input input your gtin 8 number if len
  • 如何在 Seaborn 中的热图轴上表达类

    我使用 Seaborn 创建了一个非常简单的热图 显示相似性方阵 这是我使用的一行代码 sns heatmap sim mat linewidths 0 square True robust True sns plt show 这是我得到的
  • 如何通过函数注释指示函数需要函数作为参数,或返回函数?

    您可以使用函数注释 http www python org dev peps pep 3107 在python 3中指示参数和返回值的类型 如下所示 def myfunction name str age int gt str return
  • 高效创建抗锯齿圆形蒙版

    我正在尝试创建抗锯齿 加权而不是布尔 圆形掩模 以制作用于卷积的圆形内核 radius 3 no of pixels to be 1 on either side of the center pixel shall be decimal a
  • 如何使用xlwt设置文本颜色

    我无法找到有关如何设置文本颜色的文档 在 xlwt 中如何完成以下操作 style xlwt XFStyle bold font xlwt Font font bold True style font font background col

随机推荐

  • Android资源管理中的SharedLibrary和Dynamic Reference-------之资源共享库(一)

    一 引言 共享库的概念 相信大家都有所了解 它有有许多优点 可以设想 在一个系统上要跑100个应用 并且它们都使用到了同一个库 如果这个库做成静态库 那么每个应用中都要打包一次这个库 100个应用就是100次 这无疑是重复的 我们可不可以在
  • FIFO读写控制

    如果在两个模块之间传输数据 两个模块之间的处理速率不同 会导致采集数据的遗漏或错误 在他们之间加一个数据缓存器 所有数据先经过缓存器缓存 再输入数据接送模块 创建两个模块 一个 作为发送模块 一个作为接受模块 发送模块检测到 fifo为空开
  • Python3,2行代码,多种方法,直接把网页内容转换成PDF文档和图片。

    网页转换成PDF 1 引言 2 代码实战 2 1 模块介绍 2 1 1 pdfkit 2 2 安装 2 3 代码实例 2 3 1 URL 对应网页转 PDF 2 3 2 HTML 文件转 PDF 2 3 3 字符串转 PDF 2 4 拓展
  • C++中protected访问权限问题

    今天发现有这样两句话 1 基类的保护成员对于派生类的成员是可访问的 2 派生类的成员只能通过派生类对象访问基类的保护成员 派生类对一个基类对象中的受保护成员没有访问权限 这两句话看的太头晕了 其实作者应该是想表达 只有在派生类中才可以通过派
  • Spring-boot+Dubbo(直连模式)

    Spring boot Dubbo 直连模式 Demo 这里应该有很多人会问 直连模式 什么鬼啊 一般情况下我们进行微服务开发时 都是通过zookeeper等注册中心来实现服务的提供和引用的 那直连模式没啥用啊 其实不然 直连模式大有用处
  • 基于51单片机汽车胎压温度监测报警系统(程序+仿真+原理图+元件清单)

    功能介绍 采用51单片机作为主控单片机 通过采集传感器的胎压和DS18b20的温度 显示到LCD1602上面 并且可以通过按键设置温度和压力的阈值 超过此值蜂鸣器进行报警 可以及时的提醒驾驶员胎压或者温度异常 程序采用keil编写 并且有中
  • 【翻译】容器解决方案加入了绿色软件基金会

    8月 Container Solution加入了绿色软件基金会 主要由微软设立 因为坦率地说他们有大笔资金 以帮助促进和支持我们迫切需要的气候意识的软件开发方法 Container Solution的技术伦理学家Anne Currie将是我
  • ViewPager实现导航页

    我们在首次安装app时 往往会发现会有导航页 导航页一般用于介绍功能和引导使用 那我们其实可以用ViewPager实现 ViewPager用于实现多页面的滑动切换效果 使用时需要引入 android support v4 包 好了 我们现在
  • 打开方式中选择默认方式无反映_Win7系统无法选择打开方式的解决方法

    习惯用win7系统的用户在使用过程中一定会遇到这个问题 有的时候想要打开PDF文件 如果不安装其他软件 单用默认的打开方式是打不开的 安装了软件之后 仍然找不到自己想要用的打开方式 今天小编以打开PDF为例 跟大家分享win7系统无法选择打
  • vscode前端常用插件 最新版

    1 不需要安装的插件 序号 名称 作用 settings json配置 1 Auto Rename Tag 自动关闭标签 editor linkedEditing true 2 Auto Close Tag 标签自动闭合 html auto
  • mysql 时间_MySQL中日期和时间类型

    1 日期类型 MySql中关于日期的类型有Date Datetime Timestamp三种类型 日期赋值时 允许 不严格 语法 任何标点符都可以用做日期部分或时间部分之间的间割符 例如 98 12 31 11 30 45 98 12 31
  • 宝塔 Error: BT-Task service startup failed. 问题原因以及解决方法

    因为我个人电脑用的是py3 所以自带py2的宝塔就自以为是升级了 还替换掉了宝塔的py2 因为py2和py3包和语法有部分不一样 所以不能用 导致重启服务器后失效 解决方法就是替换回来 先看看现在的Python版本 python v 如果是
  • Excel脱拽或者下拉公式时, 保持公式里单元格数字不变

    绝对引用 可以选中B1 用F4快捷键自己就给加绝对引用符号了 然后回车 复制或者拖拽 转载于 https www cnblogs com baxianhua p 9995530 html
  • SSL与TLS工作原理

    链接 https zhuanlan zhihu com p 36981565 为了保证网络通信的安全性 需要对网络上传递的数据进行加密 现在主流的加密方法就是SSL Secure Socket Layer TLS Transport Lay
  • 第5讲:VUE3工程中实现页面加载中效果和页面切换动画效果。

    VUE3工程发布后的运行过程为先加载html面 再通过html页中的js加载单页面js来渲染页面并显示 根据这个加载过程 实现页面加载中的原理是预先在html中显示加载中 再单页面数据加载完成在mounted时隐藏加载中 即实现想要的效果
  • 轻量级分割网络总结

    目录 ddrnet STDC Seg 重新思考BiSeNet ExtremeC3Net DFANet NfS SegNet 好像未开源 人像分割
  • 操作系统常见面试题及答案

    操作系统 从系统观点看 是计算机系统的一个系统软件 管理和控制计算机系统中的资源 从用户观点看 操作系统是用户与计算机之间的接口 从软件观点看 操作系统是程序和数据结构的集合 1 什么是进程 process 和线程 thread 有何区别
  • linux中esc无法正常退出insert

    ctrl c
  • 在android 输出log 信息 用于调试

    要想在 jni native 代码中看打印信息 printf 是不行的 需使用 android log print 如下所示 android log print ANDROID LOG INFO ProjectName I am d n n
  • python的文件操作

    一 文件的基本操作 1 读文件read f open filename r encoding utf 8 data f read 读文件 f close 关闭文件 1 绝对路径的易错点 文件路径中 前要加转义字符 或者 使用r使转义字符失效