python文件处理模块_python 文件处理 -- 03 文件处理模块

1.os模块

1.1作用

文件目录管理、进程管理

1.2常用

os.name--判断现在正在使用的平台。Windows--nt; Linux--posix

os.getcwd()--得到当前工作的目录。

os.listdir(path)--指定所有目录下所有的文件和目录名,返回list。

os.remove(path)--删除指定文件

os.mkdir(path [, mode=0777])--创建目录

os.makedirs(path [, mode=0777])--递归创建目录

os.path.isfile(path)--判断指定对象是否为文件。是返回True,否则False

os.path.isdir(path)--判断指定对象是否为目录。是True,否则False。

os.path.exists(path)--检验指定的对象是否存在。是True,否则False.

os.path.split(path)--返回路径的目录和文件名,元组。

importosimportsysif __name__ == "__main__":printos.path.realpath(sys.argv[0])printos.path.split(os.path.realpath(sys.argv[0]))printos.path.split(os.path.realpath(sys.argv[0]))[0]***执行结果/home/jihite/ftp/del.py

('/home/jihite/ftp', 'del.py')/home/jihite/ftp

os.system(command)——执行shell命令。成功返回0,失败返回非0

>>> os.system("echo 'hello world!'")'hello world!'0

注意:此处运行shell命令时,如果要调用python之前的变量,可以用如下方式:

var=123os.environ['var']=str(var) //注意此处[]内得是 “字符串”

os.system('echo $var')

os.chdir(path)--改变目录到指定目录

os.path.getsize(filename)--获得文件的大小,如果为目录,返回0

os.path.join(path, name)--连接目录和文件(目录)名。

os.walk(path)--递归遍历某文件夹(包括子文件夹)

walk(top, topdown=True, οnerrοr=None, followlinks=False)

1 >>>os.getcwd()2

3 'E:\\yc_study\\python\\study_imooc\\file_handle'

4

5 >>> for dir_path,dir_name,file_names inos.walk(os.getcwd()):6

7 ... print '*****dir_path\n'

8

9 ... printdir_path10

11 ... print '*****dir_name\n'

12

13 ... printdir_name14

15 ... print '*****file_name\n'

16

17 ... printfile_names18

19 ...20

21 *****dir_path22

23

24

25 E:\yc_study\python\study_imooc\file_handle26

27 *****dir_name28

29

30

31 ['1']32

33 *****file_name34

35

36

37 ['1.txt', 'argv.py', 'create_utf_8.txt', 'helloworld.py', 'unicode_test.txt']38

39 *****dir_path40

41

42

43 E:\yc_study\python\study_imooc\file_handle\1

44

45 *****dir_name46

47

48

49 ['2']50

51 *****file_name52

53

54

55 []56

57 *****dir_path58

59

60

61 E:\yc_study\python\study_imooc\file_handle\1\2

62

63 *****dir_name64

65

66

67 ['3']68

69 *****file_name70

71

72

73 []74

75 *****dir_path76

77

78

79 E:\yc_study\python\study_imooc\file_handle\1\2\3

80

81 *****dir_name82

83

84

85 []86

87 *****file_name88

89

90

91 []92

93

os.walk使用举例

2.shutil模块

2.1作用

移动、复制、打包、压缩、解压

2.2常用命令

shutil.rmtree("dir")--删除目录。空目录、有内容的目录都可以删

copyfile(src, dst)  # 拷贝文件

复制文件内容(不包含元数据)从src到dst。

DST必须是完整的目标文件名。

如果src和dst是同一文件,就会引发错误shutil.Error。

dst必须是可写的,否则将引发异常IOError。

如果dst已经存在,它会被替换。

特殊文件,例如字符或块设备和管道不能使用此功能,因为copyfile会打开并阅读文件。

src和dst的是字符串形式的路径名。

copyfile()调用了底函数层copyfileobj()。

shutil.copyfile('shutil_copyfile.py', 'shutil_copyfile.py.copy')

copyfileobj(fsrc, fdst, length=16384)  # 将文件内容拷贝到另一个文件

需要引入StringIO模块才能使用

复制文件内容(不包含元数据)从类文件对象src到类文件对dst。

可选参数length指定缓冲区的大小,负数表示一次性读入。

默认会把数据切分成小块拷贝,以免占用太多内存。

注意:拷贝是从fsrc的当前文件开始。

copy(src, dst)

复制文件src到文件或目录dst。

权限位也会复制。

如果dst是目录,使用src相同的文件名创建(或覆盖)。

src和dst的是字符串形式的路径名。

os.mkdir('example')

print 'BEFORE:', os.listdir('example')

shutil.copy('shutil_copy.py', 'example')

copy2(src, dst)

类似shutil.copy,元数据也复制。

实际上先调用shutil.copy,然后使用copystat。

shutil.copy2('shutil_copy2.py', 'example')

copytree(src, dst, symlinks=False, ignore=None)  # 递归复制

Recursively copy a directory tree using copy2().

3.glob模块

可以查找符合自己目的的文件,类似于Windows下的文件搜索,而且也支持通配符,*,?,[]这三个通配符,*代表0个或多个字符,?代表一个字符,[]匹配指定范围内的字符,如[0-9]匹配数字。

3.1glob.glob(path)

Return a list of paths matching a pathname pattern.

3.2glob.igblob()

Return an iterator which yields the paths matching a pathname pattern.

1 >>> importos2

3 >>> os.chdir(r'E:\yc_study\python\study_imooc\file_handle')4

5 >>>os.getcwd()6

7 'E:\\yc_study\\python\\study_imooc\\file_handle'

8

9 >>> importglob10

11 >>>os.listdir(os.getcwd())12

13 ['1', '1.txt', 'argv.py', 'create_utf_8.txt', 'helloworld.py', 'unicode_test.txt']14

15 >>> glob.glob(r'%s\*.py' %os.getcwd())16

17 ['E:\\yc_study\\python\\study_imooc\\file_handle\\argv.py', 'E:\\yc_study\\python\\study_imooc\\file_handle\\helloworld.py']18

19 >>> glob.glob(r'%s\*.txt' %os.getcwd())20

21 ['E:\\yc_study\\python\\study_imooc\\file_handle\\1.txt', 'E:\\yc_study\\python\\study_imooc\\file_handle\\create_utf_8.txt', 'E:\\yc_study\\python\\study_imooc\\file_handle\\unicode_test.txt']

glob.glob使用举例

1 >>> glob.iglob(r'%s\*.txt' %os.getcwd())2

3

4

5 >>> for i in glob.iglob(r'%s\*.txt' %os.getcwd()):6

7 ... printi8

9 ...10

11 E:\yc_study\python\study_imooc\file_handle\1.txt12

13 E:\yc_study\python\study_imooc\file_handle\create_utf_8.txt14

15 E:\yc_study\python\study_imooc\file_handle\unicode_test.txt

glob.iglob使用举例

4.python处理各类文件

4.1ConfigParse模块读取配置文件(.ini)

基本使用&Unicode编码问题

深度解读

4.2python处理xml文件

BeautifulSoup第三方库

4.3Python处理pdf文件

使用python setup.py install安装

示例如下,详细见pdfminer3k库的layout.py文件,或者库中的docs/index.html

from pdfminer.pdfparser importPDFParser, PDFDocumentfrom pdfminer.pdfinterp importPDFResourceManager, PDFPageInterpreterfrom pdfminer.pdfdevice importPDFDevicefrom pdfminer.layout importLAParamsfrom pdfminer.converter importPDFPageAggregator#打开PDF文档

fp = open("naacl06-shinyama.pdf", 'rb')#创建一个与文档关联的解释器

parser =PDFParser(fp)#创建PDF文档对象

pdf_doc =PDFDocument()#链接解释器和文档对象

parser.set_document(pdf_doc)

pdf_doc.set_parser(parser)#初始化pdf文档,即传入密码,没有传入空字符串即可

pdf_doc.initialize("")#创建PDF资源管理器

resource_manager =PDFResourceManager()#创建PDF参数分析器

laparam =LAParams()#使用PDF资源管理器和PDF参数分析器创建PDF聚合器

device = PDFPageAggregator(resource_manager, laparams =laparam)#使用PDF资源管理器和PDF聚合器创建页面解释器

interpreter =PDFPageInterpreter(resource_manager, device)#读取PDF文档#获取每一页

for page inpdf_doc.get_pages():#使用页面解析器来读取PDF的每一页

interpreter.process_page(page)#使用聚合器来获取内容的List -- LTPage

layouts =device.get_result()#针对每一项内容来进行打印

for layout inlayouts:#LTPage对象有多种类型,如字符、线段、图形、图片等,详细见pdfminer3k库的layout.py文件,或者库中的docs/index.html

#Represents an entire page. May contain child objects like LTTextBox, LTFigure, LTImage, LTRect, LTCurve and LTLine.

#if isinstance(layout, pdfminer.layout.LTText):

if hasattr(layout, "get_text"):print(layout.get_text())

python读取pdf文档sample

4.4Python处理对象

4.5Python处理excel表格

4.6Python处理json文件/对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值