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.硬件…

java的深拷贝和浅拷贝

总结: 深拷贝:无论是基本类型还是引用类型都会创建新的实例。 浅拷贝:对于基本类型就是复制其值,对于引用类型则是复制了指向这些数据类型的内存地址。 浅拷贝(Shallow Copy) 浅拷贝是指在创建新对象时&am…

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,成功连接展示如下…

游戏类APP选对开发框架很重要,Uni-app和Cocos Creator如何选?

开发游戏app,选择使用Uniapp和Cocos Creator这两种不同的技术平台开发时,需要考虑和比较这两者间的区别和差距。 Unity被公认为3D游戏开发的首选,它拥有成熟的3D开发工具和海量资源。华服巨作《王者荣耀》就是基于Unity引擎打造。而Cocos作为…

详解 HBase 的常用 API

一、环境准备 创建一个 Maven 工程并引入依赖 <dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>1.3.1</version> </dependency> <dependency><groupId>org.apach…

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

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

Text2SQL之Vanna优化

文章目录 前言一、优化方向二、干就完了一次性生成多个Question-SQL对先生成一个问题,再根据DDL和业务数据生成SQL总结前言 前阵子写了篇Text2SQL的简单介绍,发现其也是RAG只会,写下了Text2SQL之不装了,我也是RAG 最近也一直在做Text2SQL的优化,于是把自己的一些心得,总…

QSpinBox、QDoubleSpinBox 的使用,进制转换

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

SpringMVC的控制器方法的一些要点

一、控制器类的注解 1、SpringMVC的控制器类&#xff0c;一般用注解Controller来注释&#xff0c;代表该类是控制器类。 2、如果整个控制器都采用响应体数据返回&#xff0c;那么可以用组合注解 RestController。 二、控制方法的注解 (一)映射请求路径 1、RequestMapping注解…

Algorithm Data Management Cube(ADM-Cube)本科生招募

Algorithm & Data Management Cube&#xff08;算法与数据管理研究小组&#xff0c;A&DM-Cube, http://www.adm-cube.online/ &#xff09;是隶属于天津大学管理与经济学部信息管理与管理科学系/复杂管理系统实验室的研究团队。为了进一步加强团队建设&#xff0c;推动…

ezButton-按钮库

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

cocosCreator获取手机剪切板内容

最近游戏中需要加上复制粘贴的功能,这个时候就涉及到安卓原生层的东西。步骤如下: 公开文章地址,见个人博客 复制功能 ts代码 调用代码,在需要复制的地方调用即可。 public static copyToClipBoard(str) {if (sys.platform == sys.Platform.ANDROID) {PlatformMgr.callN…

工业设计初学者手册——第四部分:制造工艺

工业设计初学者手册 文章目录 工业设计初学者手册第四部分&#xff1a;制造工艺7. 常见制造工艺介绍7.1 传统制造工艺7.2 现代制造工艺 8. 材料选择与应用8.1 材料的基本分类与特性8.2 材料选择的原则8.3 环保材料的应用 总结 第四部分&#xff1a;制造工艺 7. 常见制造工艺介…

Laravel 中 使用模型作为标志

我最近一直在尝试的一件事是使用模型作为标志&#xff0c;并取得了积极的成果。当你需要以某种方式标记你的一个模型时&#xff0c;你可以在表中添加一个布尔值来指示某种状态。例如&#xff0c;假设你向应用程序添加了一个停用用户的功能。你可以使用如下迁移来更改用户表&…

社团管理系统

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

在Ubuntu上配置和设置防火墙UFW

在本文我们学习如何在Ubuntu上配置和设置UFW&#xff08;防火墙&#xff09;&#xff0c;UFW代表“不复杂的防火墙”&#xff0c;它充当IPTABLES的接口&#xff0c;从而简化了防火墙的配置过程&#xff0c;对于防火墙来说&#xff0c;这是非常困难的。初学者学习和配置防火墙规…