第7章 文件与数据格式化

本文详细介绍了文件操作,包括文件概述、sys模块、基本操作、读写、定位读写,以及文件与目录管理。重点讲解了open()函数、read()、write()、csv处理,还涉及os模块在文件和目录管理中的应用,如删除、重命名、创建/删除目录等。同时,介绍了文件定位读写的tell()和seek()方法。
摘要由CSDN通过智能技术生成

目录

1)文件概述

 sys模块

2)文件的基本操作

3)文件的读写

csv

 4)文件与目录管理

 这里随便用两个方法来验证

5)文件的定位读写

eg:

# 对文件进行压缩

 eg2:批处理


1)文件概述

        文件标识:文件标识的意义:找到计算机中唯一确定的文件。

文件标识的组成:文件路径、文件名主干、文件扩展名。

 sys模块

stdin(标准输入文件)stdout(标准输出文件)stderr(标准错误文件)

import sys
file = sys.stdout
file.write("hello")

hello

2)文件的基本操作

文件的打开、关闭与读写是文件的基础操作,任何更复杂的文件操作都离不开这些操作。

open()用于打开文件:open(file, mode='r', buffering=-1)

若open()函数调用成功,返回一个文件对象。
若待打开的文件不存在,文件打开失败,程序会抛出异常,并打印错误信息。

file:文件的路径。
mode:设置文件的打开模式,取值有r、w、a。
buffering:设置访问文件的缓冲方式。取值为0或1。

r:以只读方式打开文件(mode参数的默认值)。
w:以只写方式打开文件。
a:以追加方式打开文件。

b:以二进制形式打开文件。
+:以更新的方式打开文件(可读可写)

 用open()函数打开文件夹,我们要用cloes()来关闭

为什么要及时关闭?因为

计算机中可打开的文件数量是有限
打开的文件占用系统资源
若程序因异常关闭,可能产生数据丢失

3)文件的读写

read()、readline()、readlines()方法write()、writelines()

.写文件——write()方法和writelines()

writelines()方法用于将行列表写入文件,其语法格式如下:

write()方法可以将指定字符串写入文件,其语法格式如下:

with open('file.txt', mode='r') as f:

这里是在test.txt文件夹中写入对象,这里我换了行

read()方法readline()方法

read()方法可以从指定文件中读取指定字节的数据,其语法格式如下:

readline()方法可以从指定文件中读取一行数据,其语法格式如下:

with open('D:\qq\\test.txt',mode='r',encoding='utf8')as f:
    a=f.read()
    print(a)

helloword
你好

追加

# with open('a.txt',mode='a') as f:
#     a=f.write('n6666666ihao ddd\n')
#     print(a)

csv

import csv
with open('./data.csv',mode='w',encoding='utf8')as file:
    b=csv.writer(file)
    b.writerow('abcdb')
    b.writerow(['abcdefg,sdfgj'])

['a', 'b', 'c', 'd', 'b']

# 读取  csv
with open('./data.csv',mode='r',encoding='utf8') as file:
    b=csv.reader(file)
    for line in b:
        print(line)

[]
['abcdefg,sdfgj']
[]

 4)文件与目录管理

os模块

os模块中定义了与文件操作相关的函数,利用这些函数可以实现删除文件、文件重命名、创建/删除目录、获取当前目录、更改默认目录与获取目录列表等操作。

管理文件与目录

删除文件——os.remove(文件名)
文件重命名——os.rename(原文件名,新文件名)
创建/删除目录——os.mkdir(目录名)/os.rmdir(目录名)
获取当前目录——os.getcwd()
更改默认目录——os.chdir(路径名)
获取目录列表——os.listdir(目录/路径)

 这里随便用两个方法来验证

用chdir()切换到当前路径,利用makedirs()来创建多级目录

再删除


path=input("请输入路径")
os.chdir(path)
os.makedirs('zz/hh/zh/zdh')
# shutil.rmtree('zz/')

x=glob.glob('**/')#获取当期那目录的文件夹
y=glob.glob('**')#获取当前目录的文件和文件夹
a=glob.glob('**/',recursive=True)#可以便利出所有的子目录
b=glob.glob('**/*.zip',recursive=True)#加上" /* "表示获取目录中的文件需要
print(a)
print(b)
print(x)
print(y)

5)文件的定位读写

tell()方法和seek()方法

ell()方法用于获取文件当前的读写位置,以操作文件file.txt为例,tell()的用法如下:

with open('file.txt') as f:
    print(f.tell())                    # 获取文件读写位置
    print(f.read(5))                # 利用read()方法移动文件读写位置
    print(f.tell())                    # 再次获取文件读写位置

seek()方法

Python提供了seek()方法,使用该方法可控制文件的读写位置,实现文件的随机读写。seek()方法的语法格式如下:

seek(offset, from)
offset:表示偏移量,即读写位置需要移动的字节数。
from:用于指定文件的读写位置,该参数的取值为0、1、2。

seek()方法调用成功后会返回当前读写位置。

Python提供了seek()方法,使用该方法可控制文件的读写位置,实现文件的随机读写。seek()方法的语法格式如下:

with open('file.txt') as f:
    print(f.tell())                    # 获取文件读写位置
    print(f.read(5))                # 利用read()方法移动文件读写位置
    print(f.tell())                    # 再次获取文件读写位置

eg:

# 对文件进行压缩

import zipfile
import os
dir_lis=os.listdir()#找到所有文件夹
# print(dir_lis)
with zipfile.ZipFile('zdh.zip','w')as zipojb:
    for file in dir_lis:
        if file.endswith('.py'):#打包。py结尾的文件夹
            zipojb.write(file)#把它写入zipojb(自己取的名字)

with zipfile.ZipFile('zdh.zip','r')as zipojb:#这个是查看zdh.zip这压缩包下边的文件
    print(zipojb.namelist())

with zipfile.ZipFile('zdh.zip','r')as zipojb: #解压 extractall (路径)
    zipojb.extractall('D:\python\pythonb 编译\解压')#这里是选个位置存放

 ['1027.py', '1117作业.py', '1120.py', '1124.py', '1206.py', '121.py', '1214.py', '927课堂‘.py']

 eg2:批处理

from docx import Document
import random
import xlrd
def wd(title,name,time):
    document=Document('zuoye.docx')
    for i in document.paragraphs:
        # print(i.text)
        i.text = i.text.replace('*_*_*',title)
        i.text = i.text.replace('***',name)
        i.text = i.text.replace('xxxx-xx-xx',time)

    # title = str(random.randint(1,30))+title
    document.save(title + '.docx')
# wd('你好公司', '张大华', '2020.11.09')
excel=xlrd.open_workbook('zuoye1.xls')
table=excel.sheet_by_index(0)
nows=table.nrows

for i in range(nows):
    title=table.cell(i,0).value
    name=table.cell(i,1).value
    time=table.cell(i,2).value
    # time = xlrd.xldate.xldate_as_datetime(tablecell(i,2).value,0)
    # time =str(time.strftime('%Y-%m-%d'))
    # print(title,name,time)
    wd(title,name,time)

 

本章小结

本章主要介绍了文件与数据格式化相关的知识,包括计算机中文件的定义、文件的基本操作、文件与目录管理、数据维度与数据格式化。通过本章的学习,希望读者能了解计算机中文件的意义、熟练地读取和管理文件,并掌握常见的数据组织形式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值