python | 文件

# encoding: utf-8

import os
import shutil

# ************************************************
# 文件的操作模式
#
#
# r 只读,文件不存在时不能自动创建
# w 只写,文件不存在时可以自动创建
# a 追写,文件不存在时可以自动创建
# rb, wb, ab 二进制格式进行操作(图片视频音乐)
# r+, w+, a+, rb+, wb+, ab+, 以读写模式进行操作


# ************************************************
# f.tell()      当前指针位置
#
#
# 定位 f.seek(偏移量, [0, 1, 2])
#
# 0: 开头(默认)
# 1: 当前位置
# 2: 文件结尾
# 文本文件只能写 0


# ************************************************
# f.read(字节数)         字节数默认是文件内容长度,下标自动后移
# f.readline([limit])   读取一行数据,limit:限制的最大字节数
# f.readlines()         会自动的将文件按换行符进行处理,将处理好的每一行组成一个列表返回
#
#
# 文件较大时,采取readline方法,节省内存,但性能较低
# 文件较小时,可采用read方法和readlines方法,占用内存,但性能较高


# ************************************************
# 遍历
#
#
# 可以直接遍历f本身
# 也可以遍历行列表


f = open('a.text', 'r')
for i in f:
    print(i, end="")

if f.readable():
    content = f.readlines()
    for i in content:
        print(i, end="")

f.close()

# ************************************************
# 文件关闭
#
#
# 可以释放系统资源
# 会立即清空缓冲区的数据内容到磁盘文件
#
#
# f.close()
# f.flush()


# ************************************************
# 文件操作:重命名


os.rename('a.text', 'b.text')
os.renames('one/a.text', 'two/b.text')

# ************************************************
# 文件操作:删除
#
#
# os.remove(path)       删除文件,文件不存在报错
# os.rmdir(path)        删除文件夹,文件夹非空报错
# os.removedirs(path)   递归删除文件夹,文件夹非空报错


# ************************************************
# 文件操作:创建文件夹
#
#
# os.mkdir(path[, mode])    mode:数字模式权限


# ************************************************
# 文件操作:目录操作
#
#
# os.getcwd()           获取当前目录
# os.chdir(path)        改变默认目录
# os.listdir(path)      获取目录内容列表
# os.listdir('./')      获取当前目录内容列表
# os.listdir('../')     获取当前目录的上级目录内容列表


# ************************************************文件复制************************************************


# 跳转到文件操作目录
os.chdir("files")

# 只读模式打开源文件
# 追写模式打开目标文件
src_file = open("a.text", "r", encoding="utf-8")
dst_file = open("b.text", "a", encoding="utf-8")

# 从源文件中读取内容写入到目标文件中(按大文件处理)
while True:
    content = src_file.read(1024)
    if len(content) == 0:
        break
    dst_file.write(content)

# 关闭源文件和目标文件
src_file.close()
dst_file.close()

# ************************************************文件分类************************************************
# 将files文件夹下面的文件按格式进行分类


if not os.path.exists("files"):
    exit()

os.chdir("files")
# 获取文件列表
file_list = os.listdir("./")

for file_name in file_list:
    index = file_name.rfind(".")
    if index == -1:
        continue
    # 获取文件格式名
    format_name = file_name[index + 1:]
    if not os.path.exists(format_name):
        os.mkdir(format_name)
    # 移动文件至对应格式文件夹中
    shutil.move(file_name, format_name)


# ************************************************文件清单************************************************
# 列举files文件夹下的所有文件


def list_files(dir):
    file_list = os.listdir(dir)
    for file_name in file_list:
        new_fileName = dir + "/" + file_name
        if os.path.isdir(new_fileName):
            print(new_fileName)
            list_files(new_fileName)
        else:
            print(file_name)
posted @ 2018-04-21 14:17  漫威查尔斯  阅读(103)  评论(0)    收藏  举报