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所指向的文件或者目录的最后修改时间
原文地址:https://www.cnblogs.com/A-FM/p/6035327.html