python文件读写和整理

**在windows上面,路径的书写使用反斜杠作为文件夹之间的分隔符;在OS X或者Linux上则是是用正斜杠。


python上对文件进行操作要使用到os这个模块。

1.os模块和os.path模块的相关方法。

使用os.path.join()函数,通过给它传递各文件夹的名字,会返回一个文件路径的字符串,并根据使用的不同平台包含正确的路径分隔符。

<span style="font-size:18px;">import os 
os.path.join('c:','hello','123')</span>

利用os.getcwd()函数可以得到当前路径。并可以利用os.chdir()来改变它
<span style="font-size:18px;">os.getcwd()
os.chdir('e:\\hello')</span>

利用可以创建新的文件夹。
<span style="font-size:18px;">os.makedirs('hi')</span>


os.path和os常用函数:

os.path.abspath(path)将返回参数的绝对路径的字符串,这是将相对路径转化为绝对路径的最佳方法。

os.path.isabs(path)用于判断是否绝对路径,是就返回True

os.path.relpath(path,start)将返回从start到path的相对路径的字符串。如果没有提供start则以当前目录作为start

os.path.dirname(path)将返回一个字符串包含path参数中最后一个斜杠之前的所有内容。

os.path.basename(path)将返回一个字符串包含path参数中最后一个斜杠之后的内容。

os.path.split(path)将返回一个路径的目录名称和基本名称。若需得到路径中每个文件夹的字符串列表,则要使用split方法(不是os.path中的split),并将os.path.sep作为参数

os.path.getsize(path)将返回path参数中文件的字节数。

os.listdir(path)将返回文件名字符串的列表,包含path参数中的每个文件。

os.path.exists(path)若path所指的文件或文件夹存在,则返回True

os.path.isfile(path)若path所指的是一个文件且存在,则返回True。

os.path.isdir(path)若path所指的是一个文件夹且存在,则返回True。


2.文件读写过程。

3个步骤:

(1)调用open()函数,返回一个File对象。

(2)调用File对象的read()或write()方法。

(3)调用File对象的close()方法。

文件读取:

如果希望将整个文件的内容读取为一个字符串值,就使用File对象的read()方法。或者使用readlines()方法,从该文件获得一个字符串的列表,每个字符串就是文本中的每一行。

文件写入:

写入文件时,需要用'w'(写入模式)或者'a'(添加模式)打开文件,获得一个File对象。


3.用shelve模块保存变量。

利用shelve模块,可以将python程序中的变量保存到二进制的shelf文件中。这样程序就可以从硬盘恢复变量的数据。

eg.

<span style="font-size:18px;">import shelve
shelfFile = shelve.open('mydata')
team=['Arsenal','Liverpool','Bacelona']
shelfFile['team']=team
shelfFile.close()</span>

运行程序之后,会出现三个新文件:mydata.bak,mydata.dir,mydata.dat

稍后可以使用shelve模块重新打开这些文件并取出数据。shelf值不必用读模式或者写模式打开,因为它们打开之后既能读又能写。

eg.

<span style="font-size:18px;">import shelve
shelfFile=shelve.open('mydata')
shelfFile['team']                             --->['Arsenal','Liverpool','Bacelona']
shelfFile.close()</span>
如同字典一样,shelf值也有keys()和values()方法,返回shelf中键和值的类似列表的值。因为这些方法返回类似列表的值,而不是真正的列表,所以应该将他们传递给list()函数,去的列表的形式。


4.几个常用的其他函数:

random.shuffle():该函数会重新随机排列传递给他的列表中的值。

random.sample():该函数可以从一个列表中随机选出若干个你所需要的值。第一个参数是你希望选择的列表,第二个参数是你希望选择的值的个数。


5.文件整理:使用shutil模块

shutil模块中包含一些可以帮助复制,移动,改名和删除文件的函数。

  (1)复制文件和文件夹:

     调用shutil.copy(source,destination),将source处的文件复制到路径destination处的文件夹。如果destination是一个文件名,它将作为被复制文件的新名字。该函数返回一个字符串表示被复制文件的路径。


  shutil.copytree()将复制整个文件夹,以及它包含的文件夹和文件。


 (2)文件和文件夹的移动和改名:

    调用shutil.move(source,destination),将路径source处的文件夹移动到路径destination,并返回新位置的绝对路径的字符串。


destination也可以指定一个文件名,此时文件移动时被改名。

 (3)文件和文件夹的删除。

  用os.unlink(path)可以删除path处的文件。


  用os.rmdir(path)将删除path处的文件夹。该文件夹必须为空,其中没有任何文件或文件夹。

  用shutil.retree(path)将删除path处的文件夹,它包含的所有文件和文件夹都会被删除。


 (4)使用send2trash模块安全删除:

  使用第三方的send2trash模块会将文件夹和文件发送到回收站,而不是永久删除它们。这样如果不小心误操作,也可以从回收站中恢复。

 (5)使用os.walk()遍历目录:

当需要遍历目录树时候,可以使用os模块的walk()函数。该函数被传入一个文件夹路径在循环的每次迭代中,返回三个值:

*当前文件夹名称的字符串。

*当前文件夹中子文件夹的字符串列表。

*当前文件夹中文件的字符串列表。

当文件夹中还存在有子目录,就会一直迭代下去。当然,工作目录并不会随着walk函数的迭代而改变。



6.ZIP文件处理:

(1)读取zip文件

要读取Zip文件的内容,首先要创建一个类似于File对象的ZipFile对象。ZipFile对象有一个namelist()方法,会返回ZIP文件中包含的所有文件和文件夹的字符串列表。这些字符串可以传递给ZipFile对象的getinfo()方法,返回一个关于特定文件的ZipInfo对象。里面有很多属性。例如演示的file_size和compress_size属性

(2)解压缩:

使用ZipFile对象的extractall()方法解压所有文件和文件夹,放在当前目录。也可以给该方法传递一个文件夹名称,将文件和文件夹解压缩到该文件夹内。

ZipFile对象的extract()方法可以解压单个文件。传递给该方法的文件必须匹配namelist()返回的字符串列表中的一个,也可以向extract()传递第二个参数,作为destination。


(3)添加压缩文件和创建Zip文件:

要创建Zip文件,要以'w'模式打开ZipFile对象。向write()方法传入一个路径,程序就会压缩该路径所指的文件,添加到新的Zip中。

write()方法的第一个参数是一个字符串,代表要添加的文件名。第二个参数是“压缩类型”,告诉计算机是用什么算法压缩文件。

若以'a'模式打开ZipFile对象,则可以将文件添加到原有的Zip文件中。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值