python-03

使用File操作文件

open(file, mode='r', buffering=-1,encoding=None, errors=None, newline=None, closefd=True, opener=None)

file:要打开的文件

mode:文件打开模式。默认访问模式是读(r)

buffering:缓冲区大小

encoding:文件编码类型

errors:编码错误处理方法

newline:控制通用换行符模式的行为

closefd:控制在关闭文件时是否彻底关闭文件

opener:通过传递可调用对象opener,可以使用自定义开启器

r只读方式。文件指针放在文件开头。这是默认模式
rb二进制只读。指针在文件开头
r+读写。指针在文件开头
rb+二进制读写。指针在文件开头
w只写。该文件已存在则覆盖。不存在则创建
wb二进制只写。该文件已存在则覆盖。不存在则创建
w+读写。该文件已存在则覆盖。不存在则创建
wb+二进制读写。该文件已存在则覆盖。不存在则创建
a追加内容。该文件已存在则指针在文件的结尾。不存在则创建
ab二进制追加。该文件已存在则指针在文件的结尾。不存在则创建
a+读写。该文件已存在指针在文件的结尾。不存在则创建
ab+二进制读写。该文件已存在则指针在文件的结尾。不存在则创建

 file.closed:如果文件已被关闭返回True,否则返回False

file.mode:返回打开文件的访问模式

file.name:返回文件的名称

file.close()关闭文件

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件
file.fileno()返回一个整形的文件描述符
file.isatty()如果文件连接到一个终端设备返回True,否则返回False
file.next()返回文件下一行
file.read([size])从文件读取指定的字节数,如果未给定或为负则读取所有内容
file.readline([size])读取整行,包括“\n”字符
file,readlines([sizeint])读取所有行并返回列表,若给定sizeint>0,返回总和大约为hint字节的行,实际读取值可能比sizeint大些
file.seek(offset[,whence])设置文件当前位置
file.tell()返回文件当前位置
file.truncate([size])截取文件,截取的字节通过size指定,默认为当前文件位置
file.write(str)将字符串写入文件,返回的是写入的字符长度
file.writelines(lines)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
fo = open('重要学习文件.txt',"wb")
print("文件名:",fo.name)
print("是否已关闭:",fo.closed)
print("访问模式:",fo.mode)

fileObject.closed():方法close用于关闭一个已经打开的文件,关闭后的文件不能再进行读写操作,否则会触发ValueError错误。在程序中可以多次调用close()方法,当File对象被引用到操作另外一个文件时,Python会自动关闭之前的File对象。

内置函数next()遍历文件中的下一行。

如果到达结尾(EOF),则触发StopIteration异常

next(iterator[, default])

fo = open('456.txt','r')
print('文件名为:',fo.name)
for index in range(4):line = next(fo)print("第%d行-%s"%(index, line))
fo.close()

file.read([size]):从目标文件中读取指定的字节数,如果没有给定字节数或参数为负,则读取所有内容。

fo = open("销售数据.txt",'r+')
print('文件名为:', fo.name)
line = fo.read(8)
print("读取的数据:%s"%(line))
fo.close()

使用OS对象

os.access(path, mode):检验对当前文件的操作权限模式。

path:是否有访问权限的路径

mode:测试当前路径的模式,以下4种

os.F_OK:测试path是否存在

os.R_OK:测试path是否可读

os.W_OK:测试path是否可写

os.X_OK:测试path是否可执行

import os,sys
ret = os.access(r"123\456.txt",os.F_OK)
print("F_OK - 返回值%s"% ret)
ret = os.access(r"123\456.txt", os.R_OK)
print("R_OK - 返回值%s"% ret)
ret = os.access(r"123\456.txt", os.W_OK)
print("W_OK -返回值%s"%ret)
ret = os.access(r"123\456.txt",os.X_OK)
print("X_OK - 返回值%s"%ret)

os.chdir(path):修改当前工作目录到指定的路径。

path:表示要切换到的新路径

返回值:允许修改则返回True,否则返回False

import os,sys
path = '123'
retval = os.getcwd()  # 获取当前文件的工作目录
print("学习资料的保存位置是:%s"%retval)
os.chdir(path)
retval = os.getcwd()
print("目录修改成功%s"%retval)

os.chmod(path, mode):修改文件或目录的操作权限

path:文件名路径或目录路径

mode:不同权限级别,文件权限以“用户id->组id->其他”的顺序进行检验

import os, stat
os.chmod("123\数据库下载地址.txt",stat.S_IXGRP) # 设置文件可以通过用户组执行
os.chmod("123\数据库下载地址.txt",stat.S_IWOTH) # 设置文件可以被其他用户写入
print("修改成功")

 os.open(file, flags[, mode]):打开一个文件,返回新打开文件的描述符

os.write(fd, str):写入字符串到文件描述符fd指向的文件中,返回实际写入的字符串长度。

fd:文件描述符

str:写入的字符串

os.closed(fd):关闭指定文件的描述符fd,没有返回值。

fd:文件描述符

import os
fd = os.open("收视率.txt",os.O_RDWR|os.O_CREAT)
str = "XX好声音的收视率是:2.271"
ret = os.write(fd, bytes(str,"UTF-8"))
print("写入的位数为: ")
print(ret)
print("写入成功")
os.close(fd)
print("关闭文件成功")

os.read(fn, n):从文件描述符fd指向的文件中读取最多n个字节的内容,返回含读取字节的字符串。文件描述符fd对应的文件已达到结尾时,返回一个空字符串。

import os
fd = os.open("财务预算计划.txt",os.O_RDWR) # 以读写方式打开文件
# 读取文件中的8个字符
ret = os.read(fd, 8)
print(ret)
os.close(fd)
print("关闭文件成功")

os.mkdir(path [, mode]):以数字权限模式创建目录,默认的模式为0777(八进制)。

返回值:返回包含读取字节的字符串。

path:表示要创建的目录

mode:表示要为目录设置的权限数字模式

os.makedirs(path, mode=0o777):递归创建目录。创建包含子目录的文件夹目录。

import os
path = "迅雷电影/2022/科幻"
os.makedirs(path)
print("路径被创建")

其他文件操作模块

import fileinput
def demo_fileinput():with fileinput.input(['123.txt', '456.txt']) as lines:for line in lines:print('总第%d行,'%fileinput.lineno(),'文件%s中第%d行:'%(fileinput.filename(),fileinput.filelineno()))print(line.strip())
if __name__ == "__main__":demo_fileinput()

 

fileinput内置方法:

input(): 返回能够用于迭代一个或多个文件中所有行的对象。

filename():返回当前文件的名称

lineno():返回当前读取的行的数量

isfirstline():返回当前行是否是文件的第一行

filelineno():返回当前读取行在文件中的行数

import os
filenames = []
for a,b,files in os.walk('test'):  # 获取当前目录‘test’中的所有文件if files:filenames.append([file[:-4] for file in files]) # 设置扩展名为3个字母
fname = 'Excel'
i = 0
for files in filenames:f = open(fname+str(i)+'.xls','w')for name in files:f.write(name[-4:]+'\t'+name[:4]+'\n')f.close()i += 1

 

有时需要提取多个文件的文件名,并且要求提取文件名的不同部分。此时可以使用for遍历整个目录中的内容,然后使用write()函数将文件名写入指定文件中。

通过方法os.walk()对test目录下的所有文件进行遍历,获取所有记事本的文件名字符串,并保存到列表filenames中,根据指定的电子表格文件名将文件名中的内容写入Excel文件。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【proteus仿真】基于51单片机的电压检测系统

【proteus仿真】基于51单片机的电压检测系统 资料下载地址:关注公众号 小邵爱电子 获取 1.前言 使用51单片机和ADC模块设计一个数字电压表,将模拟信号0~5V之间的电压转换为数字量信号,并通过LED实时显示电压数据 、 2.仿真原理图 3.硬件…

AI写代码,CS还有前途吗?加州大学伯克利分校:CDSS申请人数激增48%!

目录 01 CS入学人数暴涨 02 人类Coder可堪大任 03 AI还没有学会创新 04 编程与农耕不同 AI写了这么多代码,你还应该学习计算机科学吗? 新的数据显示,学生们仍然热衷于选修计算机科学:加州大学伯克利分校(UCB&#…

低代码组件扩展方案在复杂业务场景下的设计与实践

组件是爱速搭的前端页面可视化模块的核心能力之一,它将前端研发人员从无休止的页面样式微调和分辨率兼容工作中解放了出来。 目前,爱速搭通过内置的上百种功能组件(120),基本可以覆盖大部分中后台页面的可视化设计场景…

如何安全进行亚马逊、沃尔玛测评?

在亚马逊、沃尔玛、速卖通、阿里国际站等电商平台上,测评已成为一种高效的推广手段,但伴随的风险也不容忽视。这些风险主要源于平台严格的大数据风控机制,它涵盖了多个方面,以确保评价的真实性和合规性。 首先,硬件参数…

EXCEL数据导入HIVE

引言 本文将论述如何将Windows本地的excel表数据,导入到虚拟机Linux系统中的Hadoop生态中的Hive数据仓库中。 实验准备 DBeaver Hive3.1(Hadoop3.1) excel数据表 实验步骤 一、首先打开虚拟机,启动Hadoop,启动hive,启动hiveserver2,连接DBeaver,成功连接展示如下…

详细描述拍立淘接口的实现过程,包括接口设计、开发、测试、部署等关键步骤

拍立淘接口的实现过程可以详细分为以下几个步骤: 注册与权限获取: 注册成为阿里巴巴开放平台开发者,并创建应用。获取API的调用权限和密钥(如AppKey和AppSecret),这些密钥将用于后续的身份验证和请求签名。…

QSpinBox、QDoubleSpinBox 的使用,进制转换

实现目的 使用QSpinBox、QDoubleSpinBox 实现数量*单价,float结果显示 使用QSpinBox、QDoubleSpinBox 实现进制的转换 拟实现界面 布局 垂直布局、groupBox中为栅格布局 控件进制设置属性 displayIntegerBase 16代表16进制 #include "spinboxexample.h" #…

ezButton-按钮库

ezButton-按钮库 使用按钮时,初学者通常会遇到以下麻烦: Floating input issue 浮动输入问题Chattering issue 抖动问题Detecting the pressed and released events 检测按下和释放的事件Managing timestamp when debouncing for multiple buttons 在多…

社团管理系统

用Spring Boot、Vue.js和MyBatis实现社团管理系统 温馨提示:项目源代码获取方式见文末 摘要 本文探讨了如何使用Spring Boot作为后端框架,Vue.js作为前端框架,以及MyBatis作为数据库持久层框架,构建一个社团管理系统。该系统旨…

从 PERL 脚本获取输出并将其加载到 MySQL 数据库的解决方案

1、问题背景 有一段 Python 脚本可以调用 Perl 脚本来解析文件,解析后,Perl 脚本会生成一个输出,这个输出将被加载到 Python 脚本中的 MySQL 数据库中。Python 脚本如下: pipe subprocess.Popen(["perl", "./pa…

JSR303校验

校验的需求 前端请求后端接口传输参数,需要校验参数。 在controller中需要校验参数的合法性,包括:必填项校验、数据格式校验等在service中需要校验业务规则,比如:课程已经审核过了,所以提交失败。 servi…

【UML用户指南】-17-对基本行为建模-交互

目录 1、消息的可视化表示 2、对象与角色 3、链和连接件 4、消息 5、序列 6、创建、修改和撤销 7、表示法 8、常用建模技术 8.1、对控制流建模 8.1.1、基于时间的控制流 8.1.2、基于结构的控制流 在任何有意义的系统中,对象都不是孤立存在的,…

Gitlab SSH无法连接但是HTTP可以连接

项目场景: Gitlab在docker中布置好之后测试,发现SSH无法连接但是HTTP可以连接 提示:这是一个无效的源路径 问题描述 http可以识别为git项目,而ssh无法识别成git项目。 原因分析: 三种猜想 端口号被占用 尝试查看…

韩兴国/姜勇团队在《Trends in Plant Science》发表植物根系氮素再分配的观点文章!

氮素是陆地生态系统中的关键限制性营养元素,通过生物固氮和土壤氮供应通常远低高等植物的氮需求。当土壤氮素供应无法充分满足植物茎叶生长需求时,植物会通过自身营养器官(如根或根茎)再分配来实现氮的内部循环和再利用。尽管植物…

SaaS产品运营|一文讲清楚为什么ToB产品更适合采用PLG模式?

在数字化时代,ToB(面向企业)产品市场的竞争愈发激烈。为了在市场中脱颖而出,许多企业开始转向PLG(产品驱动增长)模式。这种模式以产品为核心,通过不断优化产品体验来驱动用户增长和业务发展。本…

RAG未来的出路

总有人喊RAG已死,至少看目前不现实。 持这个观点的人,大多是Long context派,老实说,这派人绝大多数不甚理解长上下文的技术实现点,就觉得反正context越长,越牛B,有点饭圈化 ,当然我并不否认长上下文对提升理解力的一些帮助,就是没大家想的那么牛B而已(说个数据,达到…

2024年ERP软件公司排名前十!

在当今的商业环境中,ERP(企业资源规划)系统已成为企业日常运营不可或缺的一部分。然而,如何在这众多的ERP系统软件中筛选出最适合自己的一款,成为许多企业共同面临的挑战。今天,我将带大家盘点erp软件公司的…

李沐:用随机梯度下降来优化人生!

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今天我们来聊聊达叔 6 大核心算法之 —— 优化 算法。吴恩达:机器学习的六个核心算法! 梯度下降优化算法是机器…

Java共享台球室无人系统支持微信小程序+微信公众号

共享台球室无人系统 🎱 创新台球体验 近年来,共享经济如火如荼,从共享单车到共享汽车,无一不改变着我们的生活方式。而如今,这一模式已经渗透到了更多领域,共享台球室便是其中之一。不同于传统的台球室&a…

从中概回购潮,看互联网的未来

王兴的饭否语录里有这样一句话:“对未来越有信心,对现在越有耐心。” 而如今的美团,已经不再掩饰对未来的坚定信心。6月11日,美团在港交所公告,计划回购不超过20亿美元的B类普通股股份。 而自从港股一季度财报季结束…