Python学习(组织文件)

我现在桌面上创建了名称分别为1,2的文件夹,在1中创建了python01,python02,python03,本文的所有操作都是在这基础上进行的。

一、shutil模块:Python程序中复制、移动、改名和删除文件。

1.文件复制:调用shutil.copy(source, destination),将原始路径source处的文件复制到目标路径destination处的文件夹中(sourcedestination都是表示路径的字符串),如果destination是一个文件名,它将作为被复制文件的新名字。该函数返回复制后的文件路径,也是一个字符串。

>>> import shutil
>>> shutil.copy('C:\\Users\\King\\Desktop\\1\\python01.txt', 'C:\\Users\\King\\Desktop\\2')
'C:\\Users\\King\\Desktop\\2\\python01.txt'
>>> shutil.copy('C:\\Users\\King\\Desktop\\1\\python01.txt', 'C:\\Users\\King\\Desktop\\2\\python2_1')
'C:\\Users\\King\\Desktop\\2\\python2_1'
2.文件夹复制、备份: shutil.copytree() 将复制整个原始文件夹,并创建一个新的文件夹来保存文件,若所创文件夹已存在,则报错提示。

>>> shutil.copytree('C:\\Users\\King\\Desktop\\1', 'C:\\Users\\King\\Desktop\\2')
'C:\\Users\\King\\Desktop\\2'
3. 文件和文件夹的移动和改名shutil.move(source, destination) ,将原始路径 source 处的文件()移动到路径 destination ,返回新位置的绝对路径的字符串。

>>> shutil.move('C:\\Users\\King\\Desktop\\1', 'C:\\Users\\King\\Desktop\\2')
'C:\\Users\\King\\Desktop\\2\\1'
>>> shutil.move('C:\\Users\\King\\Desktop\\1\\python01.txt', 'C:\\Users\\King\\Desktop\\2')
'C:\\Users\\King\\Desktop\\2\\python01.txt'

注意:如果2中存在名称为1的文件夹,则不能移动;将文件夹1中的python01移动到2中(文件移动),若2中存在名称为python01的文件,则会覆盖本文件;destination路径也可以指定一个文件名(文件移动),那么source中的文件被移动后会改名为此文件名。

>>> shutil.move('C:\\Users\\King\\Desktop\\1\\python01.txt', 'C:\\Users\\King\\Desktop\\2\\python1.txt')
'C:\\Users\\King\\Desktop\\2\\python1.txt'

4.永久删除文件和文件夹

4.1调用os.unlink(path)将删除path处的文件;

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

4.3调用shutil.rmtree(path)将删除path处的文件夹,其目录下包含的所有文件和文件夹都会被删除。

>>> import os
>>> for file in os.listdir('C:\\Users\\King\\Desktop\\2'):
	if file.endswith('.txt'):    #endswith表示以什么结尾
		print(file)

python1.txt
>>> for file in os.listdir('C:\\Users\\King\\Desktop\\2'):
    if file.endswith('.txt'):
        os.unlink(os.path.join('C:\\Users\\King\\Desktop\\2', file))

    #这里不是没输出,而是以.txt结尾的文件python1.txt文件被删掉了
    #os模块有不懂的,请参看上一篇博客

5.安全删除文件或文件夹:shutil.rmtree()函数不可恢复地删除文件和文件夹,有时会出现麻烦,这里说下第三方的send2trash模块,send2trash会将删除的文件等放到回收站,不会释放磁盘空间等同于Windows上一个先扔进回收站的操作,如果想继续使用,可以手动恢复。在Windows,打开cmd命令行模式,然后输入pip回车,然后输入pip install send2trash即完成安装

>>> import send2trash
>>> baconFile = open('bacon.txt', 'a') # creates the file
>>> baconFile.write('Bacon is not a vegetable.')
25
>>> baconFile.close()
>>> send2trash.send2trash('bacon.txt')
二、 遍历目录树os.walk() 函数在循环的每次迭代中,返回3个值:

1.当前文件夹名称的字符串;

2.当前文件夹中子文件夹名称的字符串的列表;

3.当前文件夹中文件名称的字符串的列表。

>>> import os
>>> for folderName, subfolders, filenames in os.walk('C:\\Users\\King\\Desktop\\1'):
	print('The current folder is ' + folderName)
	for subfolder in subfolders:
		print('SUBFOLDER OF ' + folderName + ': ' + subfolder)
	for filename in filenames:
		print('FILE INSIDE ' + folderName + ': '+ filename)
	print('')

	
The current folder is C:\Users\King\Desktop\1
SUBFOLDER OF C:\Users\King\Desktop\1: 1.1
FILE INSIDE C:\Users\King\Desktop\1: python01.txt
FILE INSIDE C:\Users\King\Desktop\1: python02.txt
FILE INSIDE C:\Users\King\Desktop\1: python03.txt

The current folder is C:\Users\King\Desktop\1\1.1
FILE INSIDE C:\Users\King\Desktop\1\1.1: python01.txt
FILE INSIDE C:\Users\King\Desktop\1\1.1: python02.txt
FILE INSIDE C:\Users\King\Desktop\1\1.1: python03.txt
三、 用zipfile模块压缩文件

1.读取ZIP文件:用zipfile.ZipFile()函数来找到相应目录下的压缩文件。

>>> import zipfile
>>> myZip = zipfile.ZipFile('C:\\Users\\King\\Desktop\\1.zip')
>>> myZip.namelist()
['1/', '1/python01.txt', '1/python02.txt', '1/python03.txt']
>>> zipInfo = myZip.getinfo('1/python01.txt')
>>> zipInfo.file_size
13
>>> zipInfo.compress_size
15    #这里可以评论一下
>>> myZip.close() 

2.从ZIP文件中解压缩extractall(path)中可以传递一个文件夹名称,将压缩文件解压到此文件夹,而不是减压到当前工作目录。如果传递给extractall()方法的文件夹不存在,它会被创建。extract(path)方法用于从ZIP文件中解压缩单个文件,传递给extract()的字符串,必须匹配namelist()返回的字符串列表中的一个。

>>> import zipfile
>>> myZip = zipfile.ZipFile('C:\\Users\\King\\Desktop\\1.zip')
>>> myZip.extractall('C:\\Users\\King\\Desktop\\1')
>>> myZip.extract('1/python01.txt')
'C:\\Users\\King\\AppData\\Local\\Programs\\Python\\Python35\\1\\python01.txt'    #单文件减压到当前工作路径
>>> myZip.extract('1/python01.txt', 'C:\\Users\\King\\Desktop\\2')
'C:\\Users\\King\\Desktop\\2\\1\\python01.txt'    #单文件解压到制定路径
>>> myZip.close() 

 

3.创建和添加到ZIP文件要创建压缩ZIP文件,必须以“写模式”打开ZipFile对象,即传入'w'作为第二个参数。

>>> import zipfile, os
>>> os.getcwd()    #查看当前工作路径
'C:\\Users\\King\\AppData\\Local\\Programs\\Python\\Python35'
>>> os.chdir('C:\\Users\\King\\Desktop')    #更改当前工作路径到桌面
>>> os.getcwd()
'C:\\Users\\King\\Desktop'
>>> myZip = zipfile.ZipFile('1.zip', 'w')    #创建名字为1的压缩文件,也可以直接在这里面创建压缩路径,比如'C:\\Users\\King\\Desktop\\1.zip'
>>> myZip.write('C:\\Users\\King\\Desktop\\1\\python01.txt', compress_type=zipfile.ZIP_DEFLATED)    #将指定文件压缩进来
>>> myZip.close()
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值