栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础10 文件操作(IO技术)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础10 文件操作(IO技术)

目录

with上下文管理读取文本文件的例子

enumerate函数

二级制文件的读取和写入

 图片拷贝

文件对象方法和属性

 f.seek()用法

使用pickle序列化

CSV文件操作

os 和 os.path 模块

os.system 调用 windows系统记事本程序

os.startfile() 调用exe程序

os模块文件和目录模块

os.path

walk()递归遍历所有文件和目录

shutil模块 拷贝

递归算法打印目录树


with上下文管理读取文本文件的例子
with open(r"a.txt", "r",encoding="utf-8") as f:
    str = f.read()
    print(str)

print("*********")
with open(r"a.txt", "r", encoding="utf-8") as f:
    str = f.read(3)  # 空格也是一个字符
    print(str)

print("*********")

with open(r"a.txt", "r", encoding="utf-8") as f:
    str = f.readlines()  # 空格也是一个字符
    print(str)

print("*********")

with open(r"a.txt", "r", encoding="utf-8") as f:
    for a in f:
        print(a,end="")

print("*********")

enumerate函数

将文本文件每一行 后面加上行号

try:
    with open(r"a.txt", "r", encoding="utf-8") as f1:
        lines = f1.readlines()
        lines = [line.rstrip() + "#" + str(index) + 
                 "n" for index, line in enumerate(lines)]
    with open(r"a.txt", "w", encoding="utf-8") as f2:
        f2.writelines(lines)
except BaseException as e:
    print("e")

二级制文件的读取和写入

加一个符号b

 图片拷贝
with open('monkey.jpg', 'rb') as f:
    with open('monkey_copy.jpg', 'wb') as w:
        for line in f.readlines():
            w.write(line)
print('图片拷贝完成!')

文件对象方法和属性

 f.seek()用法
with open(r"a.txt", "r", encoding="utf-8") as f:
    print("文件名是:{0}".format(f.name))
    print(f.tell())
    str = f.readline()
    print(str)
    print(f.tell())
    f.seek(0)
    print(f.readline())

使用pickle序列化

pickle.dump(obj,file)  obj 是要被序列化的对象,file指的是存储的文件

pickle.load(file)    从file读取数据,反序列化对象

import pickle

a1="高"
a2=234
a3=[10,20,30]
with open (r"b.dat","wb") as f:
    pickle.dump(a1,f)
    print(id(a1))
    pickle.dump(a2,f)
    pickle.dump(a3,f)
with open (r"b.dat","rb") as f:
    b1=pickle.load(f)
    b2=pickle.load(f)
    b3=pickle.load(f)
    print(b1);print(b2);print(b3)
    print(id(b1))

CSV文件操作
import csv
with open('111.csv','r') as f:
    a_csv = csv.reader(f)
    #print(list(a_csv))
    for row in a_csv:
        print(row)
with open('22.csv','w') as f:
    b_csv=csv.writer(f)
    b_csv.writerow(["id","name","年龄"])
    b_csv.writerow(["1005","gao","18"])
    c=[["id","name","年龄"],["1005","gao","18"]]
    b_csv.writerows(c)

os 和 os.path 模块

os.system 调用 windows系统记事本程序
os.system("notepad.exe")

os.system("cmd")

os.startfile() 调用exe程序

os模块文件和目录模块

os.path

 

打印工作目录下.py 文件

#coding = utf-8
import os
path = os.getcwd()
file_list = os.listdir(path)
for filename in file_list:
    if filename.endswith("py"):
        print(filename, end='t')
print("*****")

file_list2 = [filename for filename in os.listdir(path) if filename.endswith("py")]
for f in file_list2:
    print(f, end="t")

walk()递归遍历所有文件和目录

打印所有子目录和子文件全路径

# coding = utf-8
import os

all_files = []
path = os.getcwd()
list_files = os.walk(path)

for dirpath,dirnames,filenames in list_files:
    for dir in dirnames:
        all_files.append(os.path.join(dirpath,dir))
    for file in filenames:
        all_files.append(os.path.join(dirpath,file))
for file in all_files:
    print(file)

shutil模块 拷贝

shutil.copyfile()

shutil.copytree(,ignore)

递归算法打印目录树

递归头

递归体

简单的程序是递归的优点之一。但是递归调用会占用大量的系统堆栈,内存耗用多,在递
归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重。

# coding=utf-8
import os
allfiles = []


def getallfiles(path, level):
    childfiles = os.listdir(path)
    for file in childfiles:
        filepath = os.path.join(path, file)
        if os.path.isdir(filepath):
            getallfiles(filepath, level+1)
        allfiles.append("t"*level+filepath)


getallfiles("111", 0)
for f in reversed(allfiles):
    print(f)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号