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使用 '\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所指向的文件或者目录的最后修改时间