处理passwd文本到excel中
涉及os模块、path模块
import os
from os import path
创建文件名(路径+文件名.文件后缀)的函数
在windows和linux自动识别成相应的路径
os.path.join(‘/usr’, ‘bin’, ‘test.xlsx’)
获取当前路径的函数
os.getcwd()
修改当前路径的函数
os.chdir(‘/tmp’)
创建新文件的函数
os.makedirs(‘/root/tabc’)
从os模块中导入path模块
from os import path
根据当前工作目录返回指定字符串的绝对路径的函数
获取绝对路径,它并不是找这个文件,而是给前面添加上当前路径
os.path.abspath(‘tabc’)
os.path.abspath(‘./tabc’)
判断一个路径是否是绝对路径,返回值为true或者false
os.path.isabs(‘tabc’)
os.path.isabs(‘/root/tabc’)
获取相对路径字符串
os.path.relpath(path, start)将返回从 start 路径到 path 的相对路径的字符串,如果没有指定start,则以当前目录为start
os.path.relpath(‘/usr/bin/passwd’,‘/’)
‘usr/bin/passwd’
os.path.relpath(‘/usr/bin/passwd’)
‘…/…/usr/bin/passwd’
os.path.dirname(path)函数返回一个字符串,它包含 path 参数中最后一个斜杠之前的所有内容
os.path.basename(path)函数返回一个字符串,它包含 path 参数中最后一个斜杠之后的所有内容
os.path.dirname(‘/usr/bin/passwd’)
os.path.basename(‘/usr/bin/passwd’)
os.path.join(os.path.dirname(‘/usr/bin/passwd’),os.path.basename(‘/usr/bin/passwd’))
os.path.split(‘/usr/bin/passwd’) 返回值为一个元组
获取文件路径的分隔符
os.path.sep
‘/usr/bin/passwd’.split(‘/’)
获取文件名的后缀
‘a.txt’.endswith(‘.txt’)
判断文件路径是否存在,如果不存在,那么会导致程序崩溃
os.path.exists(path)存放返回true
判断路径是文件,是返回true
os.path.isfile(path)
判断路径是目录,是返回true
os.path.isdir(path)
返回文件的大小,单位字节
os.path.getsize(‘/etc/passwd’)
返回文件夹下的文件名,存放在列表中,不会递归往下层查找
os.listdir(‘/root’)
纯文本文件读写
调用 open()函数,返回一个 File 对象
file=open(‘/etc/passwd’)
file=open(‘/etc/passwd’,‘r’)
调用 File 对象的 read()或 write()方法
file.read()方法返回整个文本为一个字符串
file.readlines()方法每一行返回一个字符串,所有行的字符串放在列表中
该方法只能调用一次
文件打开时候为w写入模式,那么就覆写,如果为a追加模式,那么就追加到打开文件里,如果为r,只读模式,则不能写入
如果文件不存在,那么就新建立文件,如果是只读打开,则报错
file.write(‘abc’) 返回写入的字符个数,字符个数包含换行符
file.close()
调用 File 对象的 close()方法,关闭该文件
import shutil
复制source单个文件到destination文件里或者文件夹里
shutil.copy(source, destination)
复制source文件夹下所有文件到destination里
shutil.copytree(source, destination)
将source单个文件移动到destination里
shutil.move(source, destination)
删除path文件
os.unlink(path)
删除path文件夹,该文件夹必须为空
os.rmdir(path)
删除path文件夹
shutil.rmtree(path)
使用第3方模块安全删除文件,将文件发送到回收站,不能回收
pip3 install send2trash
import send2trash
send2trash.send2trash(‘bacon.txt’)
遍历文件夹
os.walk返回3个值,第1个是当前文件夹,第2个当前文件夹里的子文件夹,第3个当前文件夹里的文件名
所谓当前文件夹,是指 for 循环当前迭代的文件夹。程序的当前工作目录,不会因为 os.walk()而改变
for folderName, subfolders, filenames in os.walk(‘/root/tabc’):
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(’’)
压缩文件
import zipfile
读取压缩文件从zipfile模块中使用ZipFile函数
exampleZip = zipfile.ZipFile(‘example.zip’)
查看压缩文件里有哪些压缩文件
exampleZip.namelist()
获取压缩文件里的这个压缩文件的信息
spamInfo = exampleZip.getinfo(‘spam.txt’)
获取这个文件的原始大小
spamInfo.file_size
获取这个文件的压缩大小
spamInfo.compress_size
解压zip文件的所有文件到C盘下
os.chdir(‘C:\’)
exampleZip.extractall()
解压zip文件里的某个文件到c盘下
os.chdir(‘C:\’)
exampleZip.extract(‘spam.txt’)
解压到tmp目录下
exampleZip.extract(‘spam.txt’,‘/tmp’)
关闭创建的压缩文件对象
exampleZip.close()
创建压缩文件
newZip = zipfile.ZipFile(‘new.zip’, ‘w’)
newZip.write(‘spam.txt’, compress_type=zipfile.ZIP_DEFLATED)
newZip.close()