向文件in.txt中写入字符串helloworld_Python操作文件

news/2024/7/7 10:47:36

74e7177397a24c5b4bf000be287553a3.gif

1、文件的操作

(打开,读,写,重命名,删除等)

1.1、打开文件(open)

open('文件名','r') : 只读方式打开文件

open('文件名','r+') : 以读写方式打开,文件不存在报错

open('文件名','w') : 可写方式打开文件 open('文件名','w+') : 以读写方式打开,文件不存在新建 open('文件名','a') : 以追加写方式打开,文件不存在新建 open('文件名','a+') : 以追加读写方式打开,文件不存在新建 open('文件名','rb') : 以二进制读方式打开,只能读文件 , 如果文件不存在,会发生异常 open('文件名','wb') : 以二进制写方式打开,只能写文件 , 如果文件不存在则创建
fr = open('test.txt','r') # 只读fr_ = open('test.txt','r+') # 读写,不创建fw = open('test.txt','w') # 只写,创建fw_ = open('test.txt','w+') # 读写,创建fa = open('test.txt','a') # 追加写,创建fa_ = open('test.txt','a+') # 追加读写,创建frb = open('test.txt','rb') # 二进制读,不创建fwb = open('test.txt','wb') # 二进制写,创建
1.2、写数据(write) 使用write()可以完成向文件写入数据,如果文件不存在那么创建,如果存在那么就先清空,然后写入数据
f = open('test.txt','w') # 打开test.txt文件,如果没有就新建,w文件可写f.write('hello world') #写入hello world,覆盖原先的全部数据f.close() # 关闭文件
1.3、读数据(read) 使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
f = open('test.txt','r') # 打开test.txt文件,如果没有就新建,w文件可写content = f.read(5)  # 最多读取5个数据print(content) # helloprint('*'*10)content = f.read()  # 从上次读取的位置继续读取剩下的所有的数据print(content) #  worldf.close() # 关闭文件
1.4、读数据(readlines) 就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
f = open('test.txt','w')f.write('hello world\nhello world\nhello world\nhello world\nhello world') # 写入5行hello worldf = open('test.txt', 'r')content = f.readlines()print(type(content))print(content)i=1for con in content:    print("%d:%s" % (i, con))    i += 1f.close()'''运行结果list'>['hello world\n', 'hello world\n', 'hello world\n', 'hello world\n', 'hello world']1:hello world2:hello world3:hello world4:hello world5:hello world'''
1.5、文件重命名 os模块中的rename()可以完成对文件的重命名操作
import osos.rename("test.txt", "test2.txt")
1.6,删除文件 os模块中的remove()可以完成对文件的删除操作
import osos.remove("test2.txt")

常见问题-文件有内容,却读不出来,如下例子:

f = open('test.txt','w+')f.write('hello')con = f.read()print(type(con)) # print(con) # con是一个空字符串
按照逻辑,应该读出内容是hello,那为什么读出来是一个空字符串呢? 原因指针问题,文件写入后指针指向末尾[EOF],因此读出空。 2种方法解决此问题: 1、调用close后重新打开,将指针位置重置于开头。(不能用含写的方式打开)
f = open('test.txt','w+')f.write('hello')f.close() # 关闭f = open('test.txt','r')con = f.read()f.close()print(type(con)) # print(con) # con是的内容为hello
2、调用seek指向开头
f = open('test.txt','w+')f.write('hello')f.seek(0)con = f.read()f.close()print(type(con)) # print(con) # con是的内容为hello

seek函数:seek(offset[, whence]) ,offset是相对于某个位置的偏移量。位置由whence决定,默认whence=0,从开头起;whence=1,从当前位置算起;whence=2相对于文件末尾移动,通常offset取负值。

记得关闭文件close 当我们操作完文件之后,记得一定要close文件,这是为什么呢? 当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。 所以,为了避免忘记close而文件内容又能完全写入,我们可以用with ...  as ...,如下:
with open('test.txt','w+') as f:    f.write('hello')    f.seek(0)    con = f.read()print(type(con)) # print(con) # con是的内容为hello
当我们完成了一系列的文件操作之后,系统会自动完整的将文件数据写入磁盘并关闭文件
  • 文件操作的综合应用:复制文件

    要求,新建一个用户输入名字的文件,在文件里面写入内容,然后复制文件

  • old_file_name = input('请输入文件名:')old_file = open(old_file_name,'w')old_file.write('1,hello world\n2,hello world\n3,hello world')old_file.close()file_flag_num = old_file_name.rfind('.')if file_flag_num > 0:    file_name = old_file_name[:file_flag_num]    file_flag = old_file_name[file_flag_num:]    new_file_name = file_name + '附件' + file_flagelse:    new_file_name = Nonenew_file = open(new_file_name,'w')old_file = open(old_file_name,'r')  # 要重新打开一次,不然是读取的没有内容的文件contents = old_file.readlines()for con in contents:    new_file.write(con)# 关闭文件old_file.close()new_file.close()

9bc4956a75ebbf17005c0d87c5735b45.gif

往期推荐

Python的异常处理

Python的枚举类

7个最佳的学习Python编程的开源库

好文!必须在看

http://www.niftyadmin.cn/n/3752786.html

相关文章

nginx安装部署mysql负载均衡_nginx+tomcat+mysql进行负载均衡

Nginxtomcat负载均衡群集准备工作:1台节点部署nginx2台节点部署tomcat1台部署mysql所有机器之间网络互通,并已关闭防火墙和selinux一、Nginx配置1.主配置文件配置:vim nginx.confUpstream字段中配置tomcat所在服务器IP地址,后缀要…

mysql total语法_mysql基础知识语法汇总整理(二)

insert/*insert*/insert into 表名(字段列表) values(值列表);--蠕虫复制 (优点:快速复制数据,测试服务器压力)insert into 表名1_插入 select (字段列表) from表名2_复制;例如:create tablecopy(idint(10) unsigned not null comment id,namechar(20) not null default comme…

mysql中怎么实现Apriori_关联规则Apriori算法及实现(python)

一,概念表1某超市的交易数据库交易号TID顾客购买的商品交易号TID顾客购买的商品T1面包,奶油,牛奶,茶T6面包,茶T2面包,奶油,牛奶T7啤酒,牛奶,茶T3蛋糕,牛奶T8面…

mysql解题思路_BUUCTF-Web-随便注(三种解题思路)

知识点:SQL注入-堆叠注入,sql预处理语句,巧用contact()函数绕过堆叠注入原理:在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在分号(;)结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆…

odp 加固 mysql_安装使用ODP.Net 问题及说明

最近使用VS2010时发现System.Data.OracleClient不再受微软支持,而是推荐使用Oracle自己的ODP.Net,于是就踏上了纠结的安装ODP.net的道路首先我到oracle的官网注册了账号并下载了ODTwithODAC112021这个版本(http://www.oracle.com/technetwork/database/windows/downloads/index…

stubtotally sutb

OSPF Stub area & Totally stub 一、 实验目的 1、 stub和totally stub区域存在的条件。 2、 它们会对哪几类LSA进行过滤。 3、 它们存在的好处 二、 实验拓扑 三、 Stub区域实验 首先将RIP重发布到area 2 内。查看R1的路由表和OS…

【算法】字符串算法

一、具体 要求&#xff1a;理解知道&#xff0c;一般不要求白板代码书写。 1、暴力求解&#xff08;O(MN)O(MN)O(MN)&#xff09; // Java public static int forceSearch(String txt, String pat) {int M txt.length();int N pat.length();for (int i 0; i < M - N; …

mysql 测试请求时间限制_mysql主从热备中怎么测试延时时间

展开全部使用 bcc 工具观测 MySQL&#xff1a;1)dbstat功能&#xff1a;将 MySQL/PostgreSQL 的查询延迟汇总为直方图语法&#xff1a;dbstat [-h] [-v] [-p [PID [PID ...]]] [-m THRESHOLD] [-u] [-i INTERVAL] {mysql,postgres}选项&#xff1a;{mysql,postgre…