Python文件操作
文件操作
对一个文件进行操作大致分为三个部分:
1.打开文件
2.操作文件
3.关闭文件
如何打开一个文件呢?我们可以使用open()函数。
文件句柄 = open(文件名,模式,编码)
文件名:如果文件和你的py在同一路径下只需要写上文件名即可。如果文件和你的py文件不在一个路径下,就需要写上绝对路径。
模式:默认的模式为'r',读模式。除了r模式之外还有其他类型的模式。
基本模式:
r:【只读模式】 默认模式
w:【只写模式】 文件不存在则创建;存在则清空内容再写
x:【只写模式】 不存在则创建;存在则报错
a:【追加模式】 不存在则创建,存在则追加内容
# 读模式 1 f = open('user.txt',encoding='utf-8') # 打开文件 2 data = f.read() # 写文件
3 f.close() # 关闭文件 4 print(data)
# 只写模式 f2 = open('tmp.txt', 'w', encoding='utf-8') # 打开文件 f2.write('只写模式') # 写文件
f2.colse() # 关闭文件
字节模式:
rb:【二进制读】
wb:【二进制写】
xb:【二进制写】
ab:【二进制追加】
1 # 二进制读 2 f = open('user.txt','rb') 3 data = f.read() 4 f.close() 5 print(data)
1 # 二进制写 2 f = open('user.txt','wb') 3 data = bytes('二进制写', encoding='utf-8') 4 f.write(data) 5 f.close()
文件的操作:
文件除了打开,读、写,关闭之外还有那些操作呢。下面我们来看一下。
1 def close(self): 2 #关闭文件 3 4 def fileno(self): 5 """Return the underlying file descriptor (an integer) of the stream if 6 it exists. 7 8 :rtype: int 9 """ 10 return 0 11 12 def flush(self): 13 # 清空内存缓存区 14 15 def isatty(self): 16 # 判断是否是tty文件 17 18 def readable(self): 19 # 判断文件是否可读 20 21 def readline(self, limit=-1): 22 # 读一行 23 24 def readlines(self, hint=-1): 25 # 读文件将文件的每一行作为列表的一个元素,结果返回列表 26 27 def seek(self, offset, whence=io.SEEK_SET): 28 # 指定文件中指针的位置 29 30 def seekable(self): 31 # 判断指针是否可操作 32 33 def tell(self): 34 # 获取指针位置 35 36 def truncate(self, size=None): 37 # 截取,保留指针之前的内容 38 39 def writable(self): 40 # 判断是否可写 41 42 def writelines(self, lines): 43 # 写文件 将列表作为参数写入文件 44 45 46 def read(self, n=None): 47 # 读指定字节的数据,默认读取整个文件。 48 49 def write(self, s): 50 # 写文件
小结
r+(读写) 和 w+(写读)的区别: r+(读写),先读后写:是先读取文件中的内容再在尾部写入。文件中含有原来的内容和后来写入的内容。先写后读:从头部开始写,写多少字节覆盖多少字节。 w+(写读),执行完open后文件就会被清空。
练习
1 with open('file.txt', encoding='utf-8')as f, open('file_back.txt', 'a', encoding='utf-8') as f2: 2 for line in f: 3 f2.write(line)
1 import os 2 3 with open('file.txt', encoding='utf-8') as f, open('file2.txt', 'w', encoding='utf-8') as f2: 4 5 for line in f: 6 user_list = line.split('|') 7 user_list[0] = user_list[0]+'_somebody' 8 user_str = '|'.join(user_list) 9 f2.write(user_str) 10 11 f.close() 12 f2.close() 13 14 os.remove('file.txt') 15 os.rename('file2.txt', 'file.txt')

浙公网安备 33010602011771号