1.复制文件:shutil.copy(source,destination),将source文件复制到destination的路径。
2.复制文件夹:shutil.copytree(source,destination),将source文件夹复制到destination的路径。
3.移动文件以及文件夹:shutil.move(source,destination),注意如果存在相同文件的话就会造成覆盖。而且如果错误移动到不存在的路径,那么文件就会被移动且重命名为不存在的路径名称。
*他们都会返回最终的移动/复制的路径。如果原文件不存在的话就会抛出异常。
4.永久删除文件和文件夹:
- os.unlink(path): 将删除path的文件(文件本身而非链接所知对象)。
- os.rmdir(path): 删除空文件夹。
- shutil.rmtree(path): 删除文件夹树。
5.安全删除:使用第三方send2trash
- send2trash.send2trash(path): 将文件或文件夹发送到系统回收站。
6.文件夹遍历:os.walk(dir) : 将返回一个存在于dir的文件夹名称字符串,文件夹中子文件夹的列表,当前文件夹中的文件的字符串列表。可以在迭代中使用。
7.Zip压缩文件:使用第三方模块zipfile
- 创建新的压缩包:
- 创建ZipFile对象,zipfile.zipFile(path), 从path的zip文件创建一个对象。
- zipFileobj.namlist():获取zipFile对象的所有文件以及文件夹的字符串列表。
- 内容的ZipInfo对象:可以通过zipFileobj.getinfo(fileinZipfile)获取某一个zip内容的信息的对象。ZipInfoobj.file_size 获取文件的大小,ZipInfoobj.compress_size 可以获取文件的大小。
- 设置密码:ZipFileobj.setpassword(pwd)
- 解压缩文件:zipFileobj.extractall(str=os.getcwd()):解压全部文件到目录str。解压缩单个文件:zipFileobj.extract(filepathinZip,str=os.getcwd())。返回被解压缩后的文件的路径。
- 创建和添加文件到ZIP文件:zipFileobj对象的write(path,compress_type=zipfile.ZIP_DEFLATED),compress_type可以指定压缩的算法。这里制定Deflate算法。但是需要在打开文件的时候加上w或者+的参数。
- 读取某个文件提供密码:ZipFileobj.read(name[, pwd]),pwd参数可以指定密码不仅限于read。注意:密码需要用UTF-8编码,如果py文件指定了其他的编码,请使用pwd=str('xxxxxx').encode('utf_8')
关闭zipFile对象:close()方法。
8.str字符串的编码:
- 常见的用于表示符号、英文字母的ASCII、使用两个字节的Unicode编码、UTF-8可变长的编码和GB2312编码,Python可以使用
# -*- coding: utf-8 -*-
来指定。他们的大小关系可以参考:字符串和编码。
-
Unicode不会更具字符的类型改变长度(固定两个字节,多余的位补0)。所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:
字符 ASCII Unicode UTF-8 A 01000001 00000000 01000001 01000001 中 x 01001110 00101101 11100100 10111000 10101101 从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。
- Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符。
- 直接用Unicode表示中文:
-
>>> '\u4e2d\u6587' '中文'
- 使用前缀b'str'可以吧'str'的单位改为字节。
- str.encode('utf-8')可以讲str改为UTF-8;str.decode('utf-8')可以将str解析为UTF-8的编码。
- len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数。
-
>>> len(b'ABC') 3 >>> len(b'\xe4\xb8\xad\xe6\x96\x87') 6 >>> len('中文'.encode('utf-8')) 6
参考链接:
- 更多Zip的使用:http://www.jb51.net/article/68417.htm
- Zip的编码:http://stackoverflow.com/questions/32074883/escape-exclamation-mark-python
- 字符串与编码:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431664106267f12e9bef7ee14cf6a8776a479bdec9b9000