• Python操作文件文档


    需要帮老师将44G的图书分类一下,人工当然累死了。所以用Python大法处理一下。

    思路是读取文件目录下的书名,然后去百度百科查分类,如果还没有就去豆瓣,当当查。哪一个先找到其余的就不用找了。如果没有找到先不进行一下处理

    ,当找到分类以后就开始将文件加入制定文件夹下的分类(如果没有分类文件夹则自动创建)。当所有可以通过网络分类的书进行分类之后,剩余的书就通过划分关键字进行下一次的分类。目前先附上需要查询的资料。等44G在服务器上解压完毕,处理成功之后上代码。

    os.listdir(os.getcwd()) # 查看当前目录下的所有文件和文件夹
    shutil.move("/home/xpower/WorkSpace/Jack/123","/home/xpower/Jack") #将前面的文件复制到后面的文件夹
    # os 模块
    
    os.sep 可以取代操作系统特定的路径分隔符。windows下为 '\'
    os.name 字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix'
    os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径
    os.getenv() 获取一个环境变量,如果没有返回none
    os.putenv(key, value) 设置一个环境变量值
    os.listdir(path) 返回指定目录下的所有文件和目录名
    os.remove(path) 函数用来删除一个文件
    os.system(command) 函数用来运行shell命令
    os.linesep 字符串给出当前平台使用的行终止符。例如,Windows使用 '
    ',Linux使用 '
    ' 而Mac使用 '
    '
    os.path.split(path)  函数返回一个路径的目录名和文件名
    os.path.isfile() 和os.path.isdir()函数分别检验给出的路径是一个文件还是目录
    os.path.exists() 函数用来检验给出的路径是否真地存在
    os.curdir  返回当前目录 ('.')
    os.mkdir(path) 创建一个目录
    os.makedirs(path) 递归的创建目录
    os.chdir(dirname) 改变工作目录到dirname    
    os.path.getsize(name) 获得文件大小,如果name是目录返回0L
    os.path.abspath(name) 获得绝对路径
    os.path.normpath(path) 规范path字符串形式
    os.path.splitext()  分离文件名与扩展名
    os.path.join(path,name) 连接目录与文件名或目录
    os.path.basename(path) 返回文件名
    os.path.dirname(path) 返回文件路径
    os.walk(top,topdown=True,onerror=None)  遍历迭代目录
    os.rename(src, dst)  重命名file或者directory src到dst 如果dst是一个存在的directory, 将抛出OSError. 在Unix, 如果dst在存且是一个file, 如果用户有权限的话,它将被安静的替换. 操作将会失败在某些Unix 中如果src和dst在不同的文件系统中. 如果成功, 这命名操作将会是一个原子操作 (这是POSIX 需要). 在 Windows上, 如果dst已经存在, 将抛出OSError,即使它是一个文件. 在unix,Windows中有效。
    os.renames(old, new) 递归重命名文件夹或者文件。像rename()
    
    # shutil 模块
    
    shutil.copyfile( src, dst) 从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为IOException. 如果当前的dst已存在的话就会被覆盖掉
    shutil.move( src, dst)  移动文件或重命名
    shutil.copymode( src, dst) 只是会复制其权限其他的东西是不会被复制的
    shutil.copystat( src, dst) 复制权限、最后访问时间、最后修改时间
    shutil.copy( src, dst)  复制一个文件到一个文件或一个目录
    shutil.copy2( src, dst)  在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西
    shutil.copy2( src, dst)  如果两个位置的文件系统是一样的话相当于是rename操作,只是改名;如果是不在相同的文件系统的话就是做move操作
    shutil.copytree( olddir, newdir, True/Flase)
    把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
    shutil.rmtree( src ) 递归删除一个目录以及目录内的所有内容
    
    
    
    
    先要装载 os模块:
    
    import os
    
     
    
    print os.getcwd()
    
    或者
    
    print os.path.abspath(os.curdir)
    
    print os.path.abspath('.')
    
    就可以了。
    
    (  . 代表当前的路径,.. 代表当前路径的上一级路径。这在UNIX和Windows系统意义是类似的。
    
    例如:
    
    以Winodws系统为例:
    
    当前路径是F:Temp, 则 . 的绝对路径就是F:Temp
    
    .. 的绝对路径就是F:
    
    )
    
    要获得上级目录的路径也很简单,print os.path.abspath('..')就可以了。
    
    要改变当前路径,os.chdir(path) 就可以了 path里填要改变到的目录,例如os.chdir('D:Program Files')
    
    这样大部分的文件操作现在是相对于D:Program Files 来了,例如fobj = open('Hello.txt'),实际会打开D:Program FilesHello.txt文件。
    
     
    
     
    
    
     不要通过sys.argv[0]获得当前路径,那是不正确的。sys.argv[0] 是当前执行的Python脚本的文件名,不一定是当前的路径。
    
     
    
    希望对你有所帮助。
    python中对文件、文件夹的操作需要涉及到os模块和shutil模块。
    
    创建文件:
    1) os.mknod("test.txt") 创建空文件
    2) open("test.txt",w)           直接打开一个文件,如果文件不存在则创建文件
    
    创建目录:
    os.mkdir("file")                   创建目录
    
    创建多层新目录:
    ### 创建多层目录
    def mkdirs(path): 
        # 去除首位空格
        path=path.strip()
        # 去除尾部  符号
        path=path.rstrip("\")
     
        # 判断路径是否存在
        # 存在     True
        # 不存在   False
        isExists=os.path.exists(path)
     
        # 判断结果
        if not isExists:
            # 创建目录操作函数
            os.makedirs(path)
            # 如果不存在则创建目录
            print path + u' 创建成功'
            return True
        else:
            # 如果目录存在则不创建,并提示目录已存在
            print path + u' 目录已存在'
            return False
    
    复制文件:
    shutil.copyfile("oldfile","newfile")       oldfile和newfile都只能是文件
    shutil.copy("oldfile","newfile")            oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
    
    复制文件夹:
    shutil.copytree("olddir","newdir")        olddir和newdir都只能是目录,且newdir必须不存在
    
    重命名文件(目录)
    os.rename("oldname","newname")       文件或目录都是使用这条命令
    
    移动文件(目录)
    shutil.move("oldpos","newpos")    
    
    删除文件
    os.remove("file")
    
    删除目录
    os.rmdir("dir") 只能删除空目录
    shutil.rmtree("dir")    空目录、有内容的目录都可以删 
    
    转换目录
    os.chdir("path")    换路径
    
    判断目标
    os.path.exists("goal")    判断目标是否存在
    os.path.isdir("goal")     判断目标是否目录
    os.path.isfile("goal")    判断目标是否文件  
    备注:若路径中含中文,在windows环境(编码为GBK)下,要将目录编码成GBK,如:dir.encode('GBK')
    
    os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法。更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.html
    
    1.os.path.abspath(path)
    返回path规范化的绝对路径。
     
    >>> os.path.abspath('test.csv')
    'C:\Python25\test.csv'
     
    >>> os.path.abspath('c:\test.csv')
    'c:\test.csv'
     
    >>> os.path.abspath('../csv\test.csv')
    'C:\csv\test.csv'
     
    2.os.path.split(path)
    将path分割成目录和文件名二元组返回。
     
    >>> os.path.split('c:\csv\test.csv')
    ('c:\csv', 'test.csv')
    >>> os.path.split('c:\csv\')
    ('c:\csv', '')
     
    3.os.path.dirname(path)
    返回path的目录。其实就是os.path.split(path)的第一个元素。
     
    >>> os.path.dirname('c:\csv	est.csv')
    'c:\'
    >>> os.path.dirname('c:\csv')
    'c:\'
     
    4.os.path.basename(path)
    返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素。
     
    >>> os.path.basename('c:\test.csv')
    'test.csv'
    >>> os.path.basename('c:\csv')
    'csv' (这里csv被当作文件名处理了)
    >>> os.path.basename('c:\csv\')
    ''
     
    5.os.path.commonprefix(list)
    返回list中,所有path共有的最长的路径。
     
    如:
    >>> os.path.commonprefix(['/home/td','/home/td/ff','/home/td/fff'])
    '/home/td'
     
    6.os.path.exists(path)
    如果path存在,返回True;如果path不存在,返回False。
     
    >>> os.path.exists('c:\')
    True
    >>> os.path.exists('c:\csv\test.csv')
    False
     
    7.os.path.isabs(path)
    如果path是绝对路径,返回True。
     
    8.os.path.isfile(path)
    如果path是一个存在的文件,返回True。否则返回False。
     
    >>> os.path.isfile('c:\boot.ini')
    True
    >>> os.path.isfile('c:\csv\test.csv')
    False
    >>> os.path.isfile('c:\csv\')
    False
     
    9.os.path.isdir(path)
    如果path是一个存在的目录,则返回True。否则返回False。
     
    >>> os.path.isdir('c:\')
    True
    >>> os.path.isdir('c:\csv\')
    False
    >>> os.path.isdir('c:\windows\test.csv')
    False
     
    10.os.path.join(path1[, path2[, ...]])
    将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。
     
    >>> os.path.join('c:\', 'csv', 'test.csv')
    'c:\csv\test.csv'
    >>> os.path.join('windows	emp', 'c:\', 'csv', 'test.csv')
    'c:\csv\test.csv'
    >>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c')
    '/home/aa/bb/c'
     
    11.os.path.normcase(path)
    在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
     
    >>> os.path.normcase('c:/windows\system32\')
    'c:\windows\system32\'
     
    12.os.path.normpath(path)
    规范化路径。
     
    >>> os.path.normpath('c://windows\System32\../Temp/')
    'c:\windows\Temp'
     
    12.os.path.splitdrive(path)
    返回(drivername,fpath)元组
     
    >>> os.path.splitdrive('c:\windows')
    ('c:', '\windows')
     
    13.os.path.splitext(path)
    分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作
     
    >>> os.path.splitext('c:\csv\test.csv')
    ('c:\csv\test', '.csv')
     
    14.os.path.getsize(path)
    返回path的文件的大小(字节)。
     
    >>> os.path.getsize('c:\boot.ini')
    299L
     
    15.os.path.getatime(path)
    返回path所指向的文件或者目录的最后存取时间。
     
    16.os.path.getmtime(path)
    返回path所指向的文件或者目录的最后修改时间
  • 相关阅读:
    低调做人
    《论语》中发现的问题
    Magic
    雨中游桃花岛
    说完足球说篮球
    转发一个小游戏:看看自己像哪位名人?
    发几个脑筋急转弯题
    Cynthia 终于决定做SOHO
    我家楼上的故事
    上班苦于不能上msn、qq的朋友们有福了
  • 原文地址:https://www.cnblogs.com/A-FM/p/6035327.html
Copyright © 2020-2023  润新知