美文网首页
python 基本库(os、shutil、glob)

python 基本库(os、shutil、glob)

作者: Rexfather | 来源:发表于2017-11-28 17:15 被阅读0次

    来源1:寒风
    来源2:追逐的博客

    一.os包

    os包包括各种各样的函数,以实现操作系统的许多功能。这个包非常庞杂。
    ​import os.path
    path="/home/User/Document/test.txt"

    print(os.path.basename(path)) # 查询路径中包含的文件名
    print(os.path.dirname(path)) # 查询路径中包含的目录

    filename=os.path.basename(path) # 查询路径中包含的文件名
    extension_name=os.path.splitext(filename) # 查询文件名称中的扩展名
    示例(单独示例):


    import arcpy.mapping as mapping,os
    path = r"C:"
    f = open("BrokenDataLinks.txt","w")
    for root,dirs,files in os.walk(path):
    for filename in files:
    basename,extension = os.path.splitext(filename)
    if extension = ".mxd":
    fullpath = os.path.join(root,filename)
    mxd = mapping.MapDocument(fullpath)
    f.write("MXD:" + filename + "\n")
    brknList = mapping.ListBrokenDataSources(mxd)
    for brknItem in brknList:
    f.write("\t" + brknItem.name + "\n")
    f.close()


    path="/home/User/Document/test.txt"
    info = os.path.split(path) # 将路径分割成文件名和目录两个部分,放在一个表中返回
    print(info[0]) #info[0]返回路径,即/home/User/Document,注意最后无/,与os.path.basename(path)返回结果一模一样。
    print(info[1]) #info[1]返回完成文件名称,即test.txt,与os.path.dirname(path)返回结果一模一样。

    path2 = os.path.join('/', 'home', 'User', 'Document', 'file1.txt') # 使用目录名和文件名构成一个路径字符串
    print(path2)

    p_list = [path, path2]
    print(os.path.commonprefix(p_list)) # 查询多个路径的共同部

    另外还有:
    print(os.path.exists(path)) # 查询文件是否存在
    print(os.path.getsize(path)) # 查询文件大小
    print(os.path.getatime(path)) # 查询文件上一次读取的时间
    print(os.path.getmtime(path)) # 查询文件上一次修改的时间
    print(os.path.isfile(path)) # 路径是否指向常规文件
    print(os.path.isdir(path)) # 路径是否指向目录文件


    os包的一些命令就是用于文件管理。
    mkdir(path)
    创建新目录,path为一个字符串,表示新目录的路径,它只能一层一层地建目录。相当于$mkdir命令。注意:mkdirs(path)相当于mkdir -p /var/zs/zs1/zs2

    rmdir(path)
    删除空的目录,path为一个字符串,表示想要删除的目录的路径。相当于$rmdir命令。**补充一点,前面说的如果目录不空,就不能用 os.removedirs() 删除(removedirs删除多级空目录,rmdir删除一级空目录)。但是,可以用模块 shutil 的 rmtree 方法。如:import shutil
    shutil.rmtree(path)

    listdir(path)
    返回目录中所有文件。相当于$ls命令。
    例如:
    import os
    dir = "E:\testData\spark\spark1.6"
    files=os.listdir(dir)
    for file in files:
    if os.path.isfile(file):
    print file
    #file仅仅是一个不带目录的文件名
    f = open(dir + "\" + file,'r')
    print f.readlines()
    f.close

    remove(path)
    删除path指向的文件。

    rename(src, dst)
    重命名文件,src和dst为两个路径,分别表示重命名之前和之后的路径。

    chmod(path, mode)
    改变path指向的文件的权限。相当于$chmod命令。

    chown(path, uid, gid)
    改变path所指向文件的拥有者和拥有组。相当于$chown命令。

    stat(path)
    查看path所指向文件的附加信息,相当于$ls -l命令。
    示例如下:

    指定一个文件

    path=r"e:\zs"
    pf = path + "/README.md"

    此文件的信息

    os.stat(pf)

    posix.stat_result(st_mode=33279, st_ino=67L, st_dev=26L, st_nlink=1, st_uid=0, st_gid=0, st_size=50L, st_atime=1429580969, st_mtime=1429580969, st_ctime=1429580969)

    从结果中看,可能看不出什么来,先不用着急。这样的结果是对 computer 姑娘友好的,对读者可能不友好。如果用下面的方法,就友好多了:

    fi = os.stat(pf)
    mt = fi[8]

    fi[8] 就是 st_mtime 的值,它代表最后 modified(修改)文件的时间。看结果:

    mt
    1429580969

    还是不友好。下面就用 time 模块来友好一下:

    import time
    time.ctime(mt)
    'Tue Apr 21 09:49:29 2015'

    现在就对读者友好了。

    symlink(src, dst)
    为文件dst创建软链接,src为软链接文件的路径。相当于$ln -s命令。

    getcwd()
    查询当前工作路径 (cwd, current working directory),相当于$pwd命令。

    os.system() 是在当前进程中执行命令,直到它执行结束。如果需要一个新的进程,可以使用 os.exec 或者os.execvp。另外,os.system() 是通过 shell 执行命令,执行结束后将控制权返回到原来的进程,但是os.exec() 及相关的函数,则在执行后不将控制权返回到原继承,从而使 Python 失去控制。
    system(command) -> exit_status(返回执行状态码,0或1)
    不管是什么操作系统,只要如下操作就能打开网页了:
    import webbrowser
    webbrowser.open("http://www.itdiffer.com")
    不必再使用os.system(command)那么繁琐了,需要找浏览器路径。

    os.popen(command):返回文件对象,将命令执行结果组织成文件对象。类似于linux shell编程中的command或$(command),这两个命令执行后返回的是命令执行结果,而非命令执行状态码。
    popen(...)
    popen(command [, mode='r' [, bufsize]]) -> pipe
    Open a pipe to/from a command returning a file object.
    for line in os.popen("ls -l /mnt"):
    print(line)


    二. shutil包

    copy(src, dst)
    复制文件,从src到dst。相当于$cp命令。
    move(src, dst)
    移动文件,从src到dst。相当于$mv命令。

    比如我们想复制文件a.txt:
    import shutil
    shutil.copy( 'a.txt','b.txt')
    以上相关函数跟Linux系统下shell命令非常相似,熟悉Linux的人一看就可以明白了。


    三.glob包

    glob包最常用的方法只有一个, glob.glob()。该方法的功能与Linux中的ls相似。
    接受一个Linux式的文件名格式表达式(filename pattern expression),
    列出所有符合该表达式的文件(与正则表达式类似),将所有文件名放在一个表中返回。
    所以glob.glob()是一个查询目录下文件的好方法。

    该文件名表达式的语法与Python自身的正则表达式不同,对应关系大致如下:

    Filename Pattern Expression Python Regular Expression
    * .*
    ? .

    [0-9] same

    [a-e] same

    [^mnp] same

    相关文章

      网友评论

          本文标题:python 基本库(os、shutil、glob)

          本文链接:https://www.haomeiwen.com/subject/fwqebxtx.html