第一天的学习内容---文件自动化处理

第一天的学习内容---文件自动化处理,第1张

1.os模块的简介

os文件为python标准库,是和 *** 作系统有关的 *** 作,创建、移动、复制文件和文件夹,文件路径和

名称处理。


        路径的 *** 作:

                           获取当前python程序运行路径

                           不同 *** 作系统之间路径的表示方法:

                         (1)Windows中采用反斜杠(\)作为文件夹之间的分隔符

                        (2)Mac和Linux中采用斜杠(/)作为文件夹之间的分隔符

python自动处理路径连接(一个斜线就是一个连接),注意一下转义字符,要用两个斜线.

绝对路径与相对路径.

按住ctrl键点击函数名可以获取其具体说明

import os
print(os.getcwd())
lst = os.listdir()
print(lst)
lst2=os.listdir('../word') #括号中的路径属于相对路径,‘..’为返回上一级,这里斜杆不论正方都可
for item in lst:          #在写具体路径时listdir不能写到最小的单个文件,至少要是一个文件夹
    print(item)            #在路径中‘.’为当前路径,‘..’为上一级路径
lst3=os.scandir()
for thing in lst3:
    print(thing)
# lstdir()与scandir()之间的区别为:都可以对文件夹中的目录进行遍历,但是两者的结果不一样,
# 前者结果为str类型可进行str的相关 *** 作,而后者则是nt.DirEntry类型
#通常查看使用lstdir() *** 作,而进一步的 *** 作则使用scandir()

2.文件的遍历、搜索及查询 *** 作

文件的遍历----walk

import os
lst = os.walk('./')#walk方法中必须提供参数,并且结果是返回顶层下的所有文件目录
for dirpath,dirnames,files in lst: #dirpath,dirnames,files都是walk方法中返回的三个结果,名字可以自定义
    print('发现文件夹',dirpath) #当前文件夹
    print(dirnames) #子文件夹(以列表的形式返回)
    print(files) #文件

文件的搜索:

搜索匹配文件:

        字符串内置方法:(1)startswith() (2)endswith()

        glob模块:*匹配所有,可以是0个

                        ?匹配任意单个字符,必须有一个

                         [seq]匹配seq中的任何字符

                        [!seq]匹配任何不在seq中的字符

        fnmatch模块

import os
lst=os.listdir()
for item in lst:
    if item.endswith('.py'):
        print(item)
print('----------------------------')
for item in lst:
    if item.startswith('w'):
        print(item)

import glob
print(glob.glob('*.py')) #得到以py结尾的文件
print(glob.glob('w*.py'))
print(glob.glob('w?.py'))
print(glob.glob('d[1-2].py'))
print(glob.glob('d[!1-2]*.py'))
print(glob.glob('d[1,2].py')) 
print(glob.glob('**/*.py',recursive=True)) # **表示该路径层级中及以下的任意层的文件夹*recursive=True递归

import fnmatch
print(fnmatch.fnmatch('demo8.py','demo?.py')) #验证是否符合规则

 查询文件信息: .stat(),以下是该方法返回的一些参数

import os
lst=os.scandir()
for item in lst:
    print(item.stat())

import time
print(time.ctime(1591943466)) #将该时间戳(单位为秒)转化为当前的具体时间,str类型
import datetime
that_time=datetime.datetime.fromtimestamp(1591943466) #作用同上,但输出格式略有不同
#datetime类型,对时间的 *** 作比上面的更加丰富,可以获取到时分秒
print(that_time.year,that_time.month,that_time.day,that_time.hour,that_time.minute,that_time.second)
属性含义
st_size文件体积大小(单位:bytes)
st_atime文件的最近访问时间(时间戳)
st_mtime文件的最近修改时间
st_ctimeWindows下表示创建时间
st_birthtimeMac、Linux下的表示创建时间
#从指定路径下找到今天下午14点之前创建的python文件
import os
import datetime
for file in os.scandir():
    that=file.stat()
    start_time=that.st_ctime
    user_time=datetime.datetime.fromtimestamp(start_time)
    hour=user_time.hour
    if hour<14:
        print(that)

3.创建文件及文件夹

创建临时文件及文件夹:

创建临时文件储存数据TemporaryFile(),创建临时文件夹TemporaryDirecotry()

临时创建的文件以及文件夹在运行过程中存在,但是只要运行结束文件就会被删除。


from temfile import TemporaryFile
with TemporaryFile('w+') as file:
    file.write('今天天气真好~')
    file.seek(0)
    print(file.readlines())
with TemporaryDirectory() as temp_dir:
    print(temp_dir)
    input('今天没有结束,要努力学习啊!')

创建文件夹:os.mkdir()#若不写路径则在同级目录下创建

import os
#在创建文件夹之前,先要判断创建的文件夹是否已经存在,不存在就创建
if not os.path.exists('我的文件夹'):
    os.mkdir('我的文件夹')
#创建多级文件夹,当最里层的文件夹在磁盘上存在时,程序会报错
if not os.path.exists('第一层文件夹/第二层文件夹/第三层文件夹'):
    os.makedirs('第一层文件夹/第二层文件夹/第三层文件夹')

4.复制、移动、删除文件及文件夹

复制文件:shutil.copy(要复制的文件,要复制到的位置)

复制文件夹:shutil.copytree(要复制到文件,要复制到的新文件夹位置)

import shutil
shutil.copy('d2.py','我的文件夹')#复制文件
shutil.copy('d2.py','我的文件夹/d22.py')#复制文件并修改文件名
shutil.copytree('word','第一层文件夹/第二层文件夹/第三层文件夹/第四层文件夹')
#注意新创建的文件夹不能已存在

移动文件:shutil.move(要移动的文件/文件夹,要移动到的位置)

import shutil
shutil.move('d1.py','我的文件夹/')#移动
shutil.move('d1.py','我的文件夹/new_d1.py')#移动并重命名

 删除文件:os.remove(要删除的文件)

 删除文件夹:shutil.rmtree(要删除的文件夹)

该删除会直接从磁盘中删除而不是先缓冲在垃圾桶中,删除需谨慎,可编入询问的代码放入其中

import shutil
shutil.rmtree('第一层文件夹')
import os
os.remove('d1.py')

5.重命名文件及文件夹

重命名:os.rename(要重命名的文件夹,新名称)

6.读取、创建、解压压缩包

读取要所报zip内的文件:zipfile.ZipFile()  namelist()

读取压缩包内文件信息:getinfo()

import zipfile
with zipfile.ZipFile('我的文件夹.zip','r') as zipop:
    for file_name in zipop.namelist():
        info=zipop.getinfo(file_name)
        print(file_name,info.file_size,info.compress_size)
#compress_size压缩之后文件的大小

解压压缩包:

将压缩包内单个文件解压出来:zipobj.extract(压缩包内要解压的文件,解压到的位置)

将所有文件都提取出来:zipobj.extractall(path=解压到那个位置)

import zipfile
with zipfile.ZipFile('我的文件夹.zip','r') as zipobj:
    zipobj.extract('我的文件夹/D1.py','new_dir')
    print(zipobj.namelist())
with zipfile.ZipFile('我的文件夹.zip', 'r') as zipobj:
    zipobj.extractall('D:/new_dir')

创建压缩包:zipobj.write(待压缩文件名)

向已有的压缩包内添加文件:zipobj.write(待添加的文件名)

import zipfile
file_lst=['dem1.py','dem2.py','dem3.py','dem4.py']
with zipfile.ZipFile('压缩包.zip','w') as zipobj:
    for file in file_lst:
        zipobj.write(file)
import zipfile
with zipfile.ZipFile('压缩包.zip','a') as zipobj:
    zipobj.write('dem5.py')

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/570784.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-09
下一篇2022-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存