需要帮老师将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所指向的文件或者目录的最后修改时间