需要帮老师将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使用 '\r\n',Linux使用 '\n' 而Mac使用 '\r'
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 Files\Hello.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\test.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\temp', '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所指向的文件或者目录的最后修改时间

Python操作文件文档的更多相关文章

  1. python操作docx文档(转)

    python操作docx文档 关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-docx-template;,同时我也用到了很 ...

  2. 使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

  3. 利用Python操作Word文档【图片】

    利用Python操作Word文档

  4. python库文件文档的查看

    python库文件文档的查看 第一步:cmd窗口输入:python -m pydoc -p 4567,后台运行 第二步:浏览器中打开http://localhost:4567/

  5. 用Python操作excel文档

    使用Python第三方库 这一节我们学习如何使用Python去操作Excel文档.如果大家有人不知道Excel的话,那么建议先学一学office办公基础.这里想要操作Excel,必须安装一个Pytho ...

  6. python 操作word文档

    因为工作需要操作一些word文档,记录一下学习思路 #-*- encoding: utf8 -*- import win32com from win32com.client import Dispat ...

  7. python 操作pdf文档

    简介 在实际项目中,我们有可能需要提取当中的部分内容并导出,给PDF文件添加水印,合并多份PDF文件等等,而本文会着重用到PyPDF2模块来玩转PDF文档,以及tabula模块来对PDF文档中的表格数 ...

  8. Java文件操作系列[3]——使用jacob操作word文档

    Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...

  9. python 之 前端开发( jQuery选择器、筛选器、样式操作、文本操作、属性操作、文档操作)

    11.5 jQuery 引入方式: 方式一:本地引入 <script src="jquery-3.3.1.min.js"></script> <scr ...

随机推荐

  1. 【Office Word】论文排版有关技巧

    本文分两部分,第一部分呢是Word中标题的编号以及图表的编号:第二部分是MathType中公式编号的右对齐方法.   1. word中标题的编号以及图表的编号   本部分转载自:http://blog ...

  2. Intellij IDEA 快捷键介绍

    ctrl-w   使所选表达式逐步增大直到选取整个文件  ctrl+shft+w   逐步减少选中 ctrl-n 可以通过键入类名查找一个类 ctrl-shift-n 可以查找文件 ctrl-e 得到 ...

  3. 8-JS闭包、回调实例

    1.回调 javascipt中,函数回调一般用于以下几种场景: 1.异步执行(例如读取文件,进行HTTP请求) 2.同步(阻塞) 3.事件监听和处理 4.设置超时和时间间隔的方法 异步例子(使用AJA ...

  4. wifipineapple使用教程

    1.把开关拨到右边 如果有灯亮说明有电 4个灯全亮说明电量是满的 以此类推 如果一个也不亮说明没电了需要用充电器充电 2.把开关拨到左边打开wifi的开关  会开启一个wifi大概一分钟左右会有wif ...

  5. C# 从CIL代码了解委托,匿名方法,Lambda 表达式和闭包本质

    前言 C# 3.0 引入了 Lambda 表达式,程序员们很快就开始习惯并爱上这种简洁并极具表达力的函数式编程特性. 本着知其然,还要知其所以然的学习态度,笔者不禁想到了几个问题. (1)匿名函数(匿 ...

  6. 深入浅出设计模式——解释器模式(Interpreter Pattern)

    模式动机 如果在系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个语言中的句子,因此可以构建一个解释器,该解释器通过解释这些句子来解决这些问题.解释器模式描述了如何构成一个 ...

  7. CentOS 7系统挂载NTFS分区的移动硬盘(转载及体验 CentOS6.5系统挂载NTFS分区的移动硬盘)

    作为IT的工作者,避免不了使用Linux系统,我比较喜欢CentOS,为了锻炼自己对CentOS的熟练操作,就把自己的笔记本装了CentOS,强制自己使用,使自己在平时的工作中逐渐掌握Linux的学习 ...

  8. 配置spring事务管理的几种方式(声明式事务)

    Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSo ...

  9. Shell重定向文件描述符

    #!/bin/bash      最近在看shell,各种困惑,不过解决困惑的感觉还是很不错的.废话少说,linux中使用文件描述符来标识每个文件对象.文件描述符为一个非负整数,可以唯一标识会话中打开 ...

  10. 各种效果的tab选项卡

    ;(function($){ $.fn.tabso=function( options ){ var opts=$.extend({},$.fn.tabso.defaults,options ); r ...