用py操作文件(file类的功能)

用py操作文件

1、找到文件并打开  ------- f = open(filename)  

2、读、修改 ---------- f.read() 为空即读所有;f.write(修改的内容)

3、保存&关闭 --------- f.close() 保存并关闭

文件打开模式只能以一种形式打开:

r 即read

w 即write,创建模式,如果文件里有内容用w的话会把原来的文件清空再创建

a 即append


用法:

创建模式

方法1、

f = open(file = '文件所在路径/文件名.后缀' , mode = 'w')  注意:路径需要用正斜杠 /

f.write()

f.close()

方法2(推荐)、

with open(file = '文件所在路径/文件名.后缀' , mode = 'w') as f:

f.write()

 

读模式

f = open(file = '文件所在路径/文件名.后缀' , mode = 'r')

print(f.readline()) #读一行

date = f.read() #读剩下的所有

print(date)

f.close()

追加模式

f = open(file = ‘文件名.后缀' , mode = 'w')

f.write(需要添加的内容) #追加到文件尾部

f.close()


循环文件

f = open(file = ‘文件名.后缀' , mode = 'w')

for line in f:

split()方法,即通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串

例:

str = "Line1-abcdef Line2-abc Line4-abcd";

print str.split( ); # 以空格为分隔符,包含

print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个

输出结果


其他必会功能

1、f.seek() #走多少个字节

2、f.truncate() #指定长度截断文件,指定长度的话就从文件开头开始截断指定长度,不指定长度的话就从当前位置到文件尾部


混合模式

1、w+  写读,这功能没有什么意义

2、r+   读写,能读能写,但都是写在文件的最后,和追加一样

f = open('文件名','r+')

f.write("写入的内容")

f.write("写入的内容")

print

3、a+   追加读,文件一打开光标会在文件尾部,写的数据全会是追加的形式

f = open('文件名','a+')

f.write("写入的内容")

f.write("写入的内容")

f.seek(0) #从头开始读

print


修改文件

1、用r+模式打开

f = open('文件名','r+')  注:此时光标是在文件尾部

f.seek()  注:括号内填想要修改的文件位置,0是从头开始

f.write("修改的内容") 注:修改的内容是从你seek的位置开始往后覆盖原来的内容,比如,seek(7),write("哈哈"),即从原来内容的第7个字符开始,“哈哈”会覆盖掉第8第9个字符的内容


不占内存修改文件

一、用旧文件读,用新文件写(生成新文件)

1、用r模式打开旧文件

f = open('文件名','r')

2、用w模式打开新文件

f_new = open('文件名.new','w')

3、定义旧内容、新内容

old_str = "被修改内容"

new_str = "修改内容"

4、循环旧文件

for line in f:

if "被修改内容" in line:

line = line.replace(old_str,new_str)

#replace()方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次 

5、写入新文件

f_new.write(line)

6、关闭旧、新文件

f.close()

f_new.close()

二、新文件完全覆盖旧文件

1、导入包

import os  #os包是和操作系统进行操作的,创建文件、修改文件、删除文件等

old_file = '文件名'

new_file = '文件名.new'

f = open(old_file,'r')

f_new = open(new_file,'w')

old_str = "被修改的内容"

new_str = "修改的内容"

for line in f:

if "被修改的内容" in line:

line = line.replace(old_str,new_str)

f_new.write(line)

f.close()

f_new.close()

os.replace(new_file,old_file)

方法2:

import os

with open('旧文件名','r') as read_f,open('新文件名','w') as write_f:

for line in  read_f:

line = line.replace('被修改的内容','修改的内容')

write_f.write(line)

os.remove('旧文件名')

os.replace('新文件名',''旧文件名’)


文件从硬盘写到内存

1、不关闭文件的状态下从内存写到硬盘,注:把数据写在硬盘上的一定是字符串

语法:f.flush()

把字符串变为对应数据类型的方法是:

eval()

原文地址:https://www.cnblogs.com/nanjo4373977/p/11935791.html