“Python 文件操作”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
重命名文件
 
(未显示3个用户的39个中间版本)
第1行: 第1行:
 
==引入模块==
 
==引入模块==
 +
>>> import os
 +
 +
>>> import os.path
 +
 +
>>>import shutil    #导入shutil模块
 +
 +
>>>import time
  
 
==常用操作==
 
==常用操作==
 
===创建文件===
 
===创建文件===
 +
适用于linux:
 +
 +
os.mknod("test.txt")        #创建空文件
 +
 +
linux、windows都能用:
 +
 +
fp = open("test.txt","w")    #直接打开一个文件,如果文件不存在则创建文件
 +
 +
fp.close()
 +
 +
===查看文件状态===
 +
import os
 +
 +
os.stat('1.txt')
 +
 +
<nowiki>
 +
os.stat_result(st_mode=33206, st_ino=281474977606946, st_dev=4106663517, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1649814711, st_mtime=1649814711, st_ctime=1649814711)</nowiki>
 +
 +
<nowiki>st_mode: inode 保护模式
 +
st_ino: inode 节点号。
 +
st_dev: inode 驻留的设备。
 +
st_nlink: inode 的链接数。
 +
st_uid: 所有者的用户ID。
 +
st_gid: 所有者的组ID。
 +
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
 +
st_atime: 上次访问的时间。
 +
st_mtime: 最后一次修改的时间。
 +
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
 +
</nowiki>
  
 
===重命名文件===
 
===重命名文件===
 +
>>> os.rename("7-1.py","7.1.py")
  
===文件路径拆解===
+
>>> os.listdir('.')
  
===查看文件类型===
+
['4-1.py', '5-1.py', '5-2.py', '5-3.py', '5-4.py', '5-5.py', '5-6.py', '5-7.py', '5-8.py', '6-1.py', '7.1.py', 'hamlet.txt']
 +
 
 +
os.renames("test.txt","code/test.py")
 +
 
 +
用法区别:
 +
*os.rename(src, dst)只能对相应的文件进行重命名,不能重命名文件的上级目录名。
 +
*os.renames(old, new) 是os.rename的升级, 既可以重命名文件, 也可以重命名文件的上级目录名。
  
 
===移动文件===
 
===移动文件===
 +
>>> os.rename("7.1.py",r"D:\teaching\自动化运维\7.1.py")
 +
 +
===删除文件===
 +
<nowiki>import os
 +
path=r"D:\teaching\自动化运维\8.1.py"
 +
if os.path.exists(path):#检查文件是否存在
 +
    os.remove(path)
 +
    print("删除成功")
 +
else:
 +
    print('no such file:%s'%path)
 +
</nowiki>
  
 
===复制文件===
 
===复制文件===
 +
import shutil
 +
 +
shutil.copyfile("7.1.py",r"D:\teaching\自动化运维\7.1.py")
 +
 +
'D:\\teaching\\自动化运维\\7.1.py'
 +
 +
===递归复制文件(选学)===
 +
from shutil import copytree
 +
 +
copytree(r'D:\teaching\自动化运维\2021-2022-2\OnlineMusic',r'D:\OnlineMusic')
 +
 +
'E:\\20200311\\teaching\\自动化运维\\2019-2020-2\\视频\\5. 函数和代码复用'
 +
 +
下面的代码使用shutil的copytree()函数递归复制文件夹,并忽略 docx扩展名 和以‘测试'开头的文件
 +
 +
>>> from shutil import copytree,ignore_patterns
 +
 +
>>> copytree(r'D:\teaching\自动化运维\2019-2020-2\视频\6. 组合数据类型',r'E:\20200311\teaching\自动化运维\2019-2020-2\视频\6. 组合数据类型',ignore=ignore_patterns('*.docx','测试*'))
 +
 +
'E:\\20200311\\teaching\\自动化运维\\2019-2020-2\\视频\\6. 组合数据类型'
 +
 +
 +
===归档文件(打包)===
 +
归档函数:make_archive()[2]
 +
 +
语法:shutil.make_archive(base_name, format, base_dir)
 +
 +
     base_name ---> 创建的目标文件名,包括路径,减去任何特定格式的扩展
 +
 +
     format        ---> 压缩包格式后缀:zip、tar、bztar、gztar
 +
 +
     base_dir    ---> 开始打包的路径
 +
 +
  返回值:返回打包文件的绝对路径和名称
 +
 +
<nowiki>
 +
import shutil
 +
path_1=r'D:\Game\工匠工坊\2021-2022-2\谢良慧组_第6周\高考项目第六周工单整改'
 +
path_2=r'D:\Game\工匠工坊\2021-2022-2\云计算工坊(开发)_第六周0413'
 +
new_path = shutil.make_archive(path_2, 'zip', path_1)</nowiki>
 +
 +
===解档文件(解包)===
 +
解包:将归档的文件进行释放
 +
 +
解包函数:unpack_archive()
 +
 +
  语法:shutil.unpack_archive(filename, extract_dir)
 +
 +
     filename    ---> 需要解包的文件,需要写明文件的后缀
 +
 +
     extract_dir ---> 解包后文件存放位置
 +
 +
  返回值:None
 +
 +
 +
<nowiki>
 +
import shutil
 +
 +
path_1=r'D:\Game\工匠工坊\2021-2022-2\云计算工坊(开发)_第六周0413.zip'
 +
path_2=r'D:\Game\工匠工坊\2021-2022-2\云计算工坊(开发)_第六周0413'
 +
shutil.unpack_archive(path_1,path_2)</nowiki>
 +
 +
上面的代码将刚压缩得到的文件第六周.zip解压缩至 同名文件夹内
 +
 +
思考:如何编写函数,使得可以自动解压至同名文件夹?
 +
 +
===压缩文件===
 +
1、导入zipfile模块:import zipfile
 +
 +
2、创建压缩文件:zp = zipfile.ZipFile(file, mode=' ', compression=' ', allowZip64=)
 +
 +
              file :创建zip压缩包的路径和名称
 +
 +
              mode :模式 w、r、a
 +
 +
              compression :zipfile.ZIP_STORED 默认值,压缩处理后,不改变文件大小
 +
 +
                       zipfile.ZIP_DEFLATED 压缩处理后,缩小
 +
 +
              allowZip64 :操作超过2G大小的zip文件,需要设置该参数为True
 +
 +
3、在zip文件中添加内容:zp.write(filename, arcname)        # 只能对文件进行添加,如果添加的是文件夹,则压缩结果是一个空的文件夹
 +
 +
                  filename :添加内容的路径和名称
 +
 +
                  arcname :添加后的新名称,默认为None不变
 +
 +
4、关闭压缩文件:zp.close()
 +
 +
实例:
 +
 +
<nowiki>>>> import zipfile
 +
>>> zip_path = r'D:\Work\教学\2019-2020-2\第六周.zip'
 +
>>> zp = zipfile.ZipFile(zip_path, 'a', zipfile.ZIP_DEFLATED)
 +
>>> zp.write(r'D:\Work\教学\2019-2020-2\第6周\签到.docx','签到.docx')
 +
>>> zp.write(r'D:\Work\教学\2019-2020-2\第6周\模板.docx','网课模板.docx')
 +
>>> zp.close()
 +
</nowiki>
 +
 +
===解压缩文件===
 +
1、打开zip文件:zp = zipfile.ZipFile(zip_path, 'r')
 +
 +
2、解压:1、指定其中的某个单个文件:zp.extract(member, path)
 +
 +
                        member  文件名,n. 成员
 +
 +
                        path  解压后的位置
 +
 +
2、解压全部文件:zp.extractall(path)
 +
 +
3、关闭文件:zp.close()
 +
 +
<nowiki>>>> import zipfile
 +
>>> zip_path = r'D:\Work\教学\2019-2020-2\第六周.zip'
 +
>>> zp = zipfile.ZipFile(zip,path,'r')
 +
Traceback (most recent call last):
 +
  File "<pyshell#43>", line 1, in <module>
 +
    zp = zipfile.ZipFile(zip,path,'r')
 +
NameError: name 'path' is not defined
 +
>>> zp = zipfile.ZipFile(zip_path,'r')
 +
>>> zp.extract('签到.docx','.')
 +
'签到.docx'
 +
>>> zp.extractall('.')</nowiki>
 +
 +
 +
 +
 +
修改文件权限与时间戳:os.chmod(file)
 +
 +
===查看文件类型===
 +
>>> os.path.isfile("7.1.py")
 +
 +
True
 +
 +
>>> os.path.isdir("7.1.py")
 +
 +
False
 +
 +
===查看文件时间===
 +
对于linux中的文件或者目录中有3个时间,分别是:atime、ctime、mtime.[1]
 +
 +
*atime:Access time,最后一次访问文件(读取或执行)的时间。
 +
 +
*citme:Change time,最后一次改变文件(属性)或者目录(属性)的时间。
 +
 +
*mtime:Modify time,最后一次改变文件(内容)或目录(内容)的时间。
 +
 +
查看文件修改时间,以mtime为例::
 +
 +
>>> t =os.stat("1.txt").st_atime
 +
 +
>>> import time
 +
 +
>>> t2 =time.localtime(t)
 +
 +
>>> t2
 +
 +
>>> t3 = time.strftime('%Y-%m-%d %H:%M:%S',t2)
 +
 +
>>> t3
 +
 +
<nowiki>'2023-02-21 09:02:56'</nowiki>
 +
 +
函数整理:
 +
 +
<nowiki>import time
 +
import os
 +
def file_modified_time(name):
 +
    mt=os.stat(name).st_mtime
 +
    mt2 =time.localtime(mt)
 +
    mt3=time.strftime('%Y-%m-%d %H:%M:%S',mt2)
 +
    return mt3
 +
 +
modified_time = file_modified_time('hamlet.txt')
 +
print('hamlet.txt',"修改时间",modified_time)</nowiki>
 +
 +
===查看文件大小===
 +
>>> os.path.getsize('hamlet.txt')
 +
 +
180768
 +
 +
函数整理:
 +
 +
<nowiki>def get_size(name):
 +
    size=os.path.getsize(name)
 +
    size /= 1024  #换算为KB
 +
    size = round(size,2)#保留2位小数
 +
    r
 +
</nowiki>
 +
 +
===查看文件权限===
 +
 +
<nowiki>
 +
>>> os.stat('1.txt').st_mode
 +
33206
 +
>>> oct(os.stat('1.txt').st_mode)
 +
'0o100666'
 +
>>> oct(os.stat('1.txt').st_mode)[-3:]
 +
'666'</nowiki>
 +
 +
===修改文件权限===
 +
os.chmod() 方法用于更改文件或目录的权限。
 +
语法
 +
 +
chmod()方法语法格式如下:
 +
 +
os.chmod(path, mode)
 +
 +
参数
 +
 +
    path -- 文件名路径或目录路径。
 +
 +
    flags -- 可用以下选项按位或操作生成, 目录的读权限表示可以获取目录里文件名列表, ,执行权限表示可以把工作目录切换到此目录 ,删除添加目录里的文件必须同时有写和执行权限 ,文件权限以用户id->组id->其它顺序检验,最先匹配的允许或禁止权限被应用。
 +
        stat.S_IXOTH: 其他用户有执行权0o001
 +
        stat.S_IWOTH: 其他用户有写权限0o002
 +
        stat.S_IROTH: 其他用户有读权限0o004
 +
        stat.S_IRWXO: 其他用户有全部权限(权限掩码)0o007
 +
        stat.S_IXGRP: 组用户有执行权限0o010
 +
        stat.S_IWGRP: 组用户有写权限0o020
 +
        stat.S_IRGRP: 组用户有读权限0o040
 +
        stat.S_IRWXG: 组用户有全部权限(权限掩码)0o070
 +
        stat.S_IXUSR: 拥有者具有执行权限0o100
 +
        stat.S_IWUSR: 拥有者具有写权限0o200
 +
        stat.S_IRUSR: 拥有者具有读权限0o400
 +
        stat.S_IRWXU: 拥有者有全部权限(权限掩码)0o700
 +
        stat.S_ISVTX: 目录里文件目录只有拥有者才可删除更改0o1000
 +
        stat.S_ISGID: 执行此文件其进程有效组为文件所在组0o2000
 +
        stat.S_ISUID: 执行此文件其进程有效用户为文件所有者0o4000
 +
        stat.S_IREAD: windows下设为只读
 +
        stat.S_IWRITE: windows下取消只读
 +
 +
返回值: 该方法没有返回值。
 +
 +
实例:
 +
 +
<nowiki>>>> import os,sys,stat
 +
>>> os.chmod(r"D:\teaching\自动化运维\test.txt",stat.S_IREAD)
 +
>>> os.chmod(r"D:\teaching\自动化运维\test.txt",stat.S_IWRITE)
 +
</nowiki>
  
 
===查找文件===
 
===查找文件===
 +
利用递归函数:
  
===压缩解压缩文件===
+
<nowiki>
 +
import os
 +
from os.path import join,isdir,isfile
 +
testfiles = []
 +
testfilepaths = []
 +
L = len(os.path.abspath('.'))
  
===删除文件===
+
def searchfile(path,keyWords):
 +
    for item in os.listdir(path):
 +
        item_path = os.path.join(path, item);
 +
        if isdir(item_path):
 +
            searchfile(item_path,keyWords)
 +
        elif isfile(item_path):
 +
            if keyWords in item:
 +
                print(item_path)
 +
 
 +
keywords = input("请输入关键词:")
 +
searchfile(r'D:\teaching\自动化运维',keywords)
 +
</nowiki>
  
  
  
  
创建文件 -- touch命令
 
1.2 查看文件类型 -- file命令
 
1.3 文件删除命令—— rm
 
1.4 文件移动命令 —— mv
 
1.5 文件复制命令 —— cp
 
  
    1.5.1 基本用法:复制一个源文件到目标文件(夹)
+
练习:1写一个shell解释器,给出linux命令,写出对应的python写法
    1.5.2 复制多个文件到目标文件(夹)下
 
    1.5.3 复制文件当文件重叠时不提示
 
    1.5.4 递归复制源文件夹到目标文件夹下
 
    1.5.5 只有源文件较目标文件新时复制
 
  
1.6 文件操作命令 —— find命令
+
[1]Linux中的ctime、atime、mtime理解:https://blog.csdn.net/qq_36795474/java/article/details/80215856
1.7 压缩及解压缩命令 —— gzip、bzip2
+
[2]Python基础---文件File的处理_make_archive()归档、解包、压缩、解压: https://blog.csdn.net/abcdasdff/article/details/82528658
1.8 打包及压缩命令 —— tar
 

2023年4月23日 (日) 08:04的最新版本

引入模块

>>> import os

>>> import os.path

>>>import shutil #导入shutil模块

>>>import time

常用操作

创建文件

适用于linux:

os.mknod("test.txt") #创建空文件

linux、windows都能用:

fp = open("test.txt","w") #直接打开一个文件,如果文件不存在则创建文件

fp.close()

查看文件状态

import os

os.stat('1.txt')

 
os.stat_result(st_mode=33206, st_ino=281474977606946, st_dev=4106663517, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1649814711, st_mtime=1649814711, st_ctime=1649814711)
st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。

重命名文件

>>> os.rename("7-1.py","7.1.py")

>>> os.listdir('.')

['4-1.py', '5-1.py', '5-2.py', '5-3.py', '5-4.py', '5-5.py', '5-6.py', '5-7.py', '5-8.py', '6-1.py', '7.1.py', 'hamlet.txt']

os.renames("test.txt","code/test.py")

用法区别:

  • os.rename(src, dst)只能对相应的文件进行重命名,不能重命名文件的上级目录名。
  • os.renames(old, new) 是os.rename的升级, 既可以重命名文件, 也可以重命名文件的上级目录名。

移动文件

>>> os.rename("7.1.py",r"D:\teaching\自动化运维\7.1.py")

删除文件

import os
path=r"D:\teaching\自动化运维\8.1.py"
if os.path.exists(path):#检查文件是否存在
    os.remove(path)
    print("删除成功")
else:
    print('no such file:%s'%path)

复制文件

import shutil

shutil.copyfile("7.1.py",r"D:\teaching\自动化运维\7.1.py")

'D:\\teaching\\自动化运维\\7.1.py'

递归复制文件(选学)

from shutil import copytree

copytree(r'D:\teaching\自动化运维\2021-2022-2\OnlineMusic',r'D:\OnlineMusic')

'E:\\20200311\\teaching\\自动化运维\\2019-2020-2\\视频\\5. 函数和代码复用'

下面的代码使用shutil的copytree()函数递归复制文件夹,并忽略 docx扩展名 和以‘测试'开头的文件

>>> from shutil import copytree,ignore_patterns

>>> copytree(r'D:\teaching\自动化运维\2019-2020-2\视频\6. 组合数据类型',r'E:\20200311\teaching\自动化运维\2019-2020-2\视频\6. 组合数据类型',ignore=ignore_patterns('*.docx','测试*'))

'E:\\20200311\\teaching\\自动化运维\\2019-2020-2\\视频\\6. 组合数据类型'


归档文件(打包)

归档函数:make_archive()[2]

语法:shutil.make_archive(base_name, format, base_dir)

     base_name ---> 创建的目标文件名,包括路径,减去任何特定格式的扩展

     format ---> 压缩包格式后缀:zip、tar、bztar、gztar

     base_dir ---> 开始打包的路径

  返回值:返回打包文件的绝对路径和名称

import shutil
path_1=r'D:\Game\工匠工坊\2021-2022-2\谢良慧组_第6周\高考项目第六周工单整改'
path_2=r'D:\Game\工匠工坊\2021-2022-2\云计算工坊(开发)_第六周0413'
new_path = shutil.make_archive(path_2, 'zip', path_1)

解档文件(解包)

解包:将归档的文件进行释放

解包函数:unpack_archive()

  语法:shutil.unpack_archive(filename, extract_dir)

     filename ---> 需要解包的文件,需要写明文件的后缀

     extract_dir ---> 解包后文件存放位置

  返回值:None


import shutil

path_1=r'D:\Game\工匠工坊\2021-2022-2\云计算工坊(开发)_第六周0413.zip'
path_2=r'D:\Game\工匠工坊\2021-2022-2\云计算工坊(开发)_第六周0413'
shutil.unpack_archive(path_1,path_2)

上面的代码将刚压缩得到的文件第六周.zip解压缩至 同名文件夹内

思考:如何编写函数,使得可以自动解压至同名文件夹?

压缩文件

1、导入zipfile模块:import zipfile

2、创建压缩文件:zp = zipfile.ZipFile(file, mode=' ', compression=' ', allowZip64=)

              file :创建zip压缩包的路径和名称

              mode :模式 w、r、a

              compression :zipfile.ZIP_STORED 默认值,压缩处理后,不改变文件大小

                      zipfile.ZIP_DEFLATED 压缩处理后,缩小

              allowZip64 :操作超过2G大小的zip文件,需要设置该参数为True

3、在zip文件中添加内容:zp.write(filename, arcname)        # 只能对文件进行添加,如果添加的是文件夹,则压缩结果是一个空的文件夹

                  filename :添加内容的路径和名称

                  arcname :添加后的新名称,默认为None不变

4、关闭压缩文件:zp.close()

实例:

>>> import zipfile
>>> zip_path = r'D:\Work\教学\2019-2020-2\第六周.zip'
>>> zp = zipfile.ZipFile(zip_path, 'a', zipfile.ZIP_DEFLATED)
>>> zp.write(r'D:\Work\教学\2019-2020-2\第6周\签到.docx','签到.docx')
>>> zp.write(r'D:\Work\教学\2019-2020-2\第6周\模板.docx','网课模板.docx')
>>> zp.close()

解压缩文件

1、打开zip文件:zp = zipfile.ZipFile(zip_path, 'r')

2、解压:1、指定其中的某个单个文件:zp.extract(member, path)

                        member 文件名,n. 成员

                        path  解压后的位置

2、解压全部文件:zp.extractall(path)

3、关闭文件:zp.close()

>>> import zipfile
>>> zip_path = r'D:\Work\教学\2019-2020-2\第六周.zip'
>>> zp = zipfile.ZipFile(zip,path,'r')
Traceback (most recent call last):
  File "<pyshell#43>", line 1, in <module>
    zp = zipfile.ZipFile(zip,path,'r')
NameError: name 'path' is not defined
>>> zp = zipfile.ZipFile(zip_path,'r')
>>> zp.extract('签到.docx','.')
'签到.docx'
>>> zp.extractall('.')



修改文件权限与时间戳:os.chmod(file)

查看文件类型

>>> os.path.isfile("7.1.py")

True

>>> os.path.isdir("7.1.py")

False

查看文件时间

对于linux中的文件或者目录中有3个时间,分别是:atime、ctime、mtime.[1]

  • atime:Access time,最后一次访问文件(读取或执行)的时间。
  • citme:Change time,最后一次改变文件(属性)或者目录(属性)的时间。
  • mtime:Modify time,最后一次改变文件(内容)或目录(内容)的时间。

查看文件修改时间,以mtime为例::

>>> t =os.stat("1.txt").st_atime

>>> import time

>>> t2 =time.localtime(t)

>>> t2

>>> t3 = time.strftime('%Y-%m-%d %H:%M:%S',t2)

>>> t3

'2023-02-21 09:02:56'

函数整理:

import time
import os
def file_modified_time(name):
    mt=os.stat(name).st_mtime
    mt2 =time.localtime(mt)
    mt3=time.strftime('%Y-%m-%d %H:%M:%S',mt2)
    return mt3

modified_time = file_modified_time('hamlet.txt')
print('hamlet.txt',"修改时间",modified_time)

查看文件大小

>>> os.path.getsize('hamlet.txt')

180768

函数整理:

def get_size(name):
    size=os.path.getsize(name)
    size /= 1024  #换算为KB
    size = round(size,2)#保留2位小数
    r

查看文件权限

>>> os.stat('1.txt').st_mode
33206
>>> oct(os.stat('1.txt').st_mode)
'0o100666'
>>> oct(os.stat('1.txt').st_mode)[-3:]
'666'

修改文件权限

os.chmod() 方法用于更改文件或目录的权限。 语法

chmod()方法语法格式如下:

os.chmod(path, mode)

参数

   path -- 文件名路径或目录路径。
   flags -- 可用以下选项按位或操作生成, 目录的读权限表示可以获取目录里文件名列表, ,执行权限表示可以把工作目录切换到此目录 ,删除添加目录里的文件必须同时有写和执行权限 ,文件权限以用户id->组id->其它顺序检验,最先匹配的允许或禁止权限被应用。
       stat.S_IXOTH: 其他用户有执行权0o001
       stat.S_IWOTH: 其他用户有写权限0o002
       stat.S_IROTH: 其他用户有读权限0o004
       stat.S_IRWXO: 其他用户有全部权限(权限掩码)0o007
       stat.S_IXGRP: 组用户有执行权限0o010
       stat.S_IWGRP: 组用户有写权限0o020
       stat.S_IRGRP: 组用户有读权限0o040
       stat.S_IRWXG: 组用户有全部权限(权限掩码)0o070
       stat.S_IXUSR: 拥有者具有执行权限0o100
       stat.S_IWUSR: 拥有者具有写权限0o200
       stat.S_IRUSR: 拥有者具有读权限0o400
       stat.S_IRWXU: 拥有者有全部权限(权限掩码)0o700
       stat.S_ISVTX: 目录里文件目录只有拥有者才可删除更改0o1000
       stat.S_ISGID: 执行此文件其进程有效组为文件所在组0o2000
       stat.S_ISUID: 执行此文件其进程有效用户为文件所有者0o4000
       stat.S_IREAD: windows下设为只读
       stat.S_IWRITE: windows下取消只读

返回值: 该方法没有返回值。

实例:

>>> import os,sys,stat
>>> os.chmod(r"D:\teaching\自动化运维\test.txt",stat.S_IREAD)
>>> os.chmod(r"D:\teaching\自动化运维\test.txt",stat.S_IWRITE)

查找文件

利用递归函数:

import os
from os.path import join,isdir,isfile
testfiles = []
testfilepaths = []
L = len(os.path.abspath('.'))

def searchfile(path,keyWords):
    for item in os.listdir(path):
        item_path = os.path.join(path, item);
        if isdir(item_path):
            searchfile(item_path,keyWords)
        elif isfile(item_path):
            if keyWords in item:
                print(item_path)

keywords = input("请输入关键词:")
searchfile(r'D:\teaching\自动化运维',keywords)



练习:1写一个shell解释器,给出linux命令,写出对应的python写法

[1]Linux中的ctime、atime、mtime理解:https://blog.csdn.net/qq_36795474/java/article/details/80215856 [2]Python基础---文件File的处理_make_archive()归档、解包、压缩、解压: https://blog.csdn.net/abcdasdff/article/details/82528658