Python读写文件与目录

Python读写文本文件,json文件,pkl文件等。Python对目录的读取。

Python读写文件

文本文件

Read

  • 按行读取
    1
    2
    3
    4
    5
    6
    with open(path, 'r') as f:
    line = f.readline()
    while line:
    line=line.strip()
    print(line)
    line = f.readline()

Write

1
2
3
4
5
i=0
with open(path, 'w') as fp: #追加模式,w换成a
while i <= 10:
f.write("{}\n".formate(i))
i+=1

json文件

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

READ

1
2
3
import json
with open(path, 'r') as fp:
info=json.load(fp)

Write

1
2
3
import json
with open(path, 'w') as fp:
json.dump(info, fp)

pkl文件

pickle提供了一个简单的持久化功能,可以将对象以文件的形式存放在磁盘上。
pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化。
pkl文件保存为二进制格式,读写方式与json类似。

Read

反序列化对象。将文件中的数据解析为一个Python对象。

1
2
3
import pickle
with open(path, 'rb') as fp:
info=pickle.load(fp)

Write

序列化对象,并将结果数据流写入到文件对象中。‘pickle.dump(obj, file[, protocol])’,参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。

1
2
3
import pickle
with open(path, 'wb') as fp:
pickle.dump(infos, fp)

Python读写目录

获取某目录下的全部文件

1
2
3
4
5
6
7
import os
path='/home/user/program'
roots=os.listdir(path)
print('root_dir:',roots)
for file in roots:
if os.path.isfile(path+file):
print(file)

获取某目录下的全部目录

1
2
3
4
5
6
7
import os
path='/home/user/program'
roots=os.listdir(path)
print('root_dir:',roots)
for file in roots:
if not os.path.isfile(path+file):
print(file)


1
2
3
4
5
6
7
import os
path='/home/user/program'
roots=os.listdir(path)
print('root_dir:',roots)
for file in roots:
if os.path.isdir(path+file):
print(file)

walk一次拿到全部分开的文件和目录

1
2
3
4
5
import os
def file_name(file_dir):
root= os.walk(file_dir,topdown=True)
print(root.__next__())
file_name('/home/user/program')

输出:
('/home/zzm/program', ['sketch_rnn', 'semantic_image_inpainting-master', 'timage', '.ipynb_checkpoints', 'Gan_Mnist', 'GlobalLocalImageCompletion_TF-master', '11Class_1_new_64', '.git', '11Class_3_new_64'], ['aa.c', 'test.py', 'aa', 'Untitled.ipynb', 'linerRegression.py', 'DealImage.py'])

递归获取所有子目录下的文件和目录

1
2
3
4
5
6
7
8
import os
def file_name(file_dir):
for root,dirs,files in os.walk(file_dir,topdown=True):
print('root_dir:',root)
print('sub_dirs:',dirs)
print('files',files)

file_name('/home/user/program')

获取某一类型的文件,并获取没有后缀的文件名

1
2
3
4
5
6
import os
roots=os.listdir('/home/zzm/program')
print('root_dir:', roots)
for file in roots:
if os.path.isfile('/home/zzm/program/' + file) and os.path.splitext(file)[1] == '.py' :
print(os.path.splitext(file)[0])

glob

os.listdir: 获取文件夹下的文件和文件夹的名称
glob.glob: 获取文件夹下,符合通配符的文件及文件夹的路径
注意:不要在末尾加 \,文件夹参数就到文件夹,不用加\,文件通配符,也不用加 \

1
2
3
4
import glob
import os
paths = glob.glob(os.path.join(path,'*.json'))
# 输出带路径

Contents
  1. 1. Python读写文件
    1. 1.1. 文本文件
      1. 1.1.1. Read
      2. 1.1.2. Write
    2. 1.2. json文件
      1. 1.2.1. READ
      2. 1.2.2. Write
    3. 1.3. pkl文件
      1. 1.3.1. Read
      2. 1.3.2. Write
  2. 2. Python读写目录
    1. 2.1. 获取某目录下的全部文件
    2. 2.2. 获取某目录下的全部目录
    3. 2.3. walk一次拿到全部分开的文件和目录
    4. 2.4. 递归获取所有子目录下的文件和目录
    5. 2.5. 获取某一类型的文件,并获取没有后缀的文件名
    6. 2.6. glob
|