Python文件读取

对文件的基本操作一共有如下四种:

打开文件

1
file_obj = open("文件路径","模式")

常用的打开文件模式有:

  • r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
  • w:打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  • a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  • w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

读取文件的内容

1
2
3
4
5
obj.read():一次性加载所有内容到内存
obj.readLines():一次性加载所有内容到内存,并根据行分割成字符串
for line in obj:
print line
#每次仅读取一行数据

写文件的内容

1
obj.write('内容'):给文件写入内容

关闭文件句柄

1
obj.close():关闭文件

常见用法:

1
2
3
4
obj = open("test.log","r")
for line in obj:
print(line)
obj.close()
1
2
3
4
obj = open("test.log","w")
obj.write("This is the first line\n")
obj.write("This is the second line\n")
obj.close()
  • 追加
1
2
3
obj = open("test.log","a")
obj.write("This is the three line\n")
obj.close()
  • 写读
1
2
3
4
obj = open("test.log","w+")
obj.write("new line\n")
print("data:",obj.read())
obj.close()

实战

  • 读写文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os
def readFile(filename):
file = open(filename,'rb')
data=file.readlines()
file.close()
return data

def writeFile(filename,data):
file= open(filename,'wb')
file.write(data)
file.close()
print 'File had been writed Succed!'

if __name__=="__main__":
sourcefile = './b.py'
outputfile = './target.txt'
writeFile(outputfile,readFile(sourcefile))
print 'end!'
  • 获取文件夹下所有的文件名
  • os.walk()
    1
    2
    3
    4
    5
    def file_name(file_dir):   
    for root, dirs, files in os.walk(file_dir):
    print(root) #当前目录路径
    print(dirs) #当前路径下所有子目录
    print(files) #当前路径下所有非目录子文件
1
2
3
4
5
6
7
8
9
def file_name(file_dir):   
L=[]
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] == '.csv':
L.append(os.path.join(root, file))
return L

# 其中os.path.splitext()函数将路径拆分为文件名+扩展名
Directory
  1. 1. 对文件的基本操作一共有如下四种:
    1. 1.1. 打开文件
    2. 1.2. 读取文件的内容
    3. 1.3. 写文件的内容
    4. 1.4. 关闭文件句柄
  2. 2. 常见用法:
  3. 3. 实战