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所指向的文件或者目录的最后修改时间
时间: 2024-08-17 13:21:10

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

python库文件文档的查看

第一步:cmd窗口输入:python -m pydoc -p 4567,后台运行 第二步:浏览器中打开http://localhost:4567/ 原文地址:https://www.cnblogs.com/weizhideweilai/p/9515079.html

python+selenium自动化软件测试(第12章):Python读写XML文档

XML 即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 行定义的源语言.xml 有如下特征: 首先,它是有标签对组成:<aa></aa> 标签可以有属性: <aa id=’123’></aa> 标签对可以嵌入数据: <aa>abc</aa>Python对XML文档读写常用有几个模块: (1) xml.etree.ElementTree ElementTree就像一个轻量级的DOM,具有方便友好的A

Python处理Excel文档(xlrd, xlwt, xlutils)

简介 xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具.其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改. (以下属性或方法并非全部,需要更多属性请参看文档:建议先参考文末Demo,再深入了解) xlrd Book(class) 由xlrd.open_work("example.xls"

ElasticSearch常用操作:文档篇

[TOC] 1 新建文档 1.1 指定id PUT my_blog/article/1 { "id":1, "title":"elasticsearch", "posttime":"2017-05-01", "content":"elasticsearch is helpfull!" } 返回: { "_index": "my_blog&

js事件,操作页面文档,计算后样式,数据类型

js:运行在浏览器的脚本语言 js引入 1.行间式:存在于行间事件中 <div id="div" onclick="this.style.color="red"">文本内容</div> <style> div{ width: 100px; height: 100px; background-color: red; } </style> </head> <body> <d

使用Jquery 操作 sharepoint2013文档库(增删改查)

使用Jquery 操作 sharepoint2013文档库(增删改查) [html] view plaincopyprint? //https://xxx.sharepoint.com/AAA/_api/web/GetFolderByServerRelativeUrl('/AAA/SingtelLaunchProcess')/Files //https://xxx.sharepoint.com/AAA/_api/web/GetFolderByServerRelativeUrl('Document

文档对象模型操作xml文档

简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规范化接口.DOM是表示文档(比如HTML和XML)和访问.操作构成文档的各种元素的应用程序接口,它以树状结构表示HTML和XML文档,定义了遍历这个树和检查.修改树的节点的方法和属性. DOM的核心API还允许你创建和填充文件.加载文档并保存. 2.2DOM实现 微软的net框架在Systemx.x

C#操作Word文档(加密、解密、对应书签插入分页符)

原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己在MSDN上面的查找,后来总算把问题给解决掉啦.下面对C#操作Word文档(加密.解密.插入分页符)做一个简单的总结,希望对一些朋友有所帮忙吧.^_^ 写代码之前,需要引用对应的DLL文件: 1.Interop.Microsoft.Office.Interop.Word.dll  (网上可以下载)

C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)

XML文档是一种通用的文档,这种文档既可以用.config作为后缀也可以用.xml作为后缀.XML文档主要由元素节点和节点的属性共同构成的.它有且仅有一个根节点,其他的节点全部都是根节点的子节点或者子子节点:每一个节点有开始就一定会有结束,不可能出现有开始无结束的节点,节点主要有两种类型:有InnerText的<city>……</city>和没有InnerText的<city……/>.在节点中含有属性,一个节点可以含有多个属性,每个属性是由名字和值共同构成的. 在XML