码迷,mamicode.com
首页 > 编程语言 > 详细

Python中操作文件

时间:2021-06-03 18:09:28      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:enc   原来   更新   开始   第一个   打开文件   input   als   适合   

open()函数

简介

预想操作python中的文件(打开/创建/追加),必须使用python的内置函数:open()
open函数常用参数有两个: 第一个实参,是文件的所在路径(若文件在python中,则写文件名称即可,若文件在电脑中,则需要填写文件的绝对路径,且\字符需要转义) 第二个实参,决定了打开文件的模式:只读,写入,追加等。常用的包括r,
w,a,+,b(后边详细介绍每个字符的含义),如果不传参,默认使用r的方式

 

文件操作三步骤:
1、打开open()
2、操作read()、write()、seek()
3、关闭close()

语法
file = open(filename,mode,encoding=utf-8)
print(file.read())
file.close

实例
file = open(C:Users\\User\\Desktop\\hello.txt,a+,encoding=utf-8) # 追加读写模式,使用a+
file.write(hello 123)# 追加写内容,使用write()方法
file.seek(0) # 移动指针位置,使用seek()方法
print(file.read()) # 读文件,使用read()方法
file.close # 关闭文件,使用close()方法

 

不同模式打开文件的含义

b   二进制模式,以二进制格式打开或写入,一般用于打开非文本文件,如图片,可与r,w,a,+共同使用,如:rb,rb+,wb,wb+,ab,ab+
+   打开一个文件进行更新(可读可写),可与r,w,a共同使用,如:r+,w+,a+
r 读模式,只能读不能写。这是默认模式,打开不存在的文件会报错
r
+ 读写模式,文件指针将会放在文件的开头,打开不存在的文件会报错
w 写模式,只能写不能读。
如果该文件已存在,会把原有文件中的数据覆盖,打开不存在的文件会创建。
w+  读写模式,如果该文件已存在,会把原有文件中的数据覆盖,打开不存在的文件会创建。
a   追加模式,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a
+
追加读写模式,打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

 

模式rr+ww+aa+
   
 
创建    
覆盖        
指针在开始    
指针在结尾        

 

read()方法--读

file = open(C:Users\\User\\Desktop\\hello.txt,r,encoding=utf-8)

print(file.read()) # 读取文件中的所有内容
file.seek(0)
print(file.readline()) # 按行读取文件中的内容,读取时占用内存小,比较适合大文件
file.seek(0)
print(file.readlines()) # 读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存
print(file.readable()) # 如果文件是可读的,返回 True,否则返回 False

file.close

write()方法--写

file = open(C:Users\\User\\Desktop\\hello.txt,a+,encoding=utf-8)

file.write(123\n) # write()的参数是一个字符串
file.writelines([456\n,456\n]) # writelines()的参数可以是一个字符串,也可以是一个列表
file.seek(0)
print(file.read())
print(file.writable()) # 如果文件是可写的,返回True,否则返回Flase

循环文件 

# 循环取值
file = open(test.txt,encoding=utf-8) # 打开文件,默认是使用r读模式 for line in file: print(line)

 

# 循环写入
l = [haha,heihei,hehe,lala]

for i in l:
    f = open(input.txt, w+, encoding=utf-8)
    f.write(i)
    f.seek(0)
    print(f.read())
    f.close()

 

# 循环写入
l = [a, b, c, d, e]
f = open(wxy.txt, w, encoding=utf-8)  # 打开一个文件向里边写入
for i in l:  # 循环list
    f.write(i + \n)  # 每循环一次,写入一个值,如果想换行,就在后面加\n

f.writelines(l)  # 传一个list的话,它会帮你循环,把list中的每个元素都写到文件里面,该方法和上边循环的效果一样
f.close()

f1 = open(wxy.txt, r, encoding=utf-8)
print(f1.read())  # 读取这个文件中的值
f1.close()

 

replace()方法--替换

练习:把test文件中的xiaolan改成dalan

test文件中内容:
xiaohei
xiaobai
xiaolan
xiaohong

 

# 写法1,
# 思路:1、读取内容 2、替换 3、清除原来文件的内容 4、把新的内容写进去


file = open(test,a+,encoding=utf-8)
file.seek(0) # 移动指针位置
result = file.read() #将读取的文件,赋值给result
content = result.replace(xiaolan,dalan)  # 将result中替换后的信息,赋值给content
file.truncate(0) # 清空原有文件
file.write(content) # 将替换后的内容写入到file中
file.seek(0)
print(file.read()) # 读取文件
file.close()

 

# 写法2,大文件用这种方式处理
# 思路:1、逐行处理 2、打开a(要修改的文件)文件,在打开b(空文件)文件
# 3、从a文件中读一行,修改,修改之后写到b文件中 4、删除a文件,把b文件的名字改成a文件
f = open(test.txt,encoding=utf-8) # 打开文件,默认是使用r读模式
f2 = open(test1.txt,a+,encoding=utf-8) # w模式,打开不存在的文件会创建

for line in f:
    result = line.replace(xiaolan,dalan)# 替换文件内容
    # result = line.upper() # 把文件内容转换为大写字母
    f2.write(result)
f2.seek(0)
print(f2.read())
f.close()
f2.close()

import os
os.remove(test.txt) # 将test.txt文件删除
os.rename(test1.txt,test.txt) # 将test1.txt重命名为test.txt

 

Python中操作文件

标签:enc   原来   更新   开始   第一个   打开文件   input   als   适合   

原文地址:https://www.cnblogs.com/wxinyu/p/14832467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!