python自动操作脚本_用Python操纵文件(自动化脚本的第一步)

用Python操纵文件(自动化脚本的第一步)

@(Python相关)

os模块相关

路径的跨平台(解决windows系统和Unix系统正反斜杠的问题)

import os

spam_path = os.path.join('usr','bin','spam')

控制工作目录

获取当前工作目录

cwd_path = os.getcwd()

更换当前工作目录

os.chdir(new_cwd_path)

创建新文件夹

os.makedirs(os.path.join(os.getcwd(),newdir,subdir))

此函数会沿着指定的路径连续创建不存在的文件夹,以确保路径的完整性

绝对路径与相对路径

检查给定路径是否是绝对路径

os.path.isabs(path)

将相对路径转化为绝对路径

abs_path = os.path.abspath(relative_path)

提取两个路径之间的相对路径(从start到end)

rel_path = os.path.relpath(end,start)

分离提取文件的绝对路径里的文件夹路径与文件名

dir_path = os.path.dirname(path)

file_name = os.path.basename(path)

dir_path, file_name = os.path.split(path)

若要逐级分离(当作字符串处理)

path_string.split(os.path.sep)

"""

此种用法在windows上第一个是磁盘的名称

而在Mac和Linux上第一个是空字符串,因为字符串的第一个字符就是分隔符~

"""

os.getcwd() -> '/mnt/lvm/dingning/datasets/coco'

os.getcwd().split(os.path.sep) -> ['', 'mnt', 'lvm', 'dingning', 'datasets', 'coco']

查看文件大小和文件夹内容

查看指定路径下的文件的大小(返回对应文件的字节数)

os.path.getsize(file_path)

查看指定文件夹路径对应的文件夹中的文件名称(返回文件名列表)

os.listdir(dir_path)

检查文件有效性

检查path对应的文件或文件夹是否存在(返回布尔变量)

os.path.exists(path)

检查file_path对应的文件路径是否存在,并且是否是一个文件(返回布尔变量)

os.path.isfile(file_path)

检查dir_path对应的文件夹路径是否存在,并且是一个文件夹(返回布尔变量)

os.path.isdir(dir_path)

遍历目录树 os.walk()

传入一个文件夹路径,在每次迭代时返回三个值:

当前文件夹名称的字符串

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

当前文件夹中问价的字符串列表

import os

for folderName, subfolders, filenames in os.walk(fold_path):

print 'the current folder is ' + folderName

for subfolder in subfolders:

print 'something'

for filename in filenames:

print 'something'

File对象相关

文件读写

三个步骤:

针对指定文件路径字符串调用open()返回一个File对象

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

调用File对象的close()方法,关闭文件

一般使用with ... as ... :方式使用文件

读取文件内容:

read() 将整个文件读取为一个字符串

readlines() 将文本的每一行读取为一个字符串,返回整个文件所有行字符串对应的列表

写入文件(只有一个write()方法):

以'w'方式打开文件,若该文件不存在,则创建,若存在,则覆盖

以'a'方式打开文件,若该文件不存在,则创建,若存在,则在文件内容的最后开始追加写入

write()不会自动加入\n,所以写入文件的时候如果需要换行,则需要自己添加换行分隔符

用shelve模块保存Python变量(将Python变量保存到二进制shelf文件中)

import shelve

shelfFile = shelve.open('mydata')

cats = ['a','b','c']

shelfFile['cats'] = cats

shelfFile.close()

shelve文件就像一个列表,对每一个变量都可以取一个名字作为key,然后其内容则为value

list(shelfFile.keys()) -> ['cats']

list(shelfFile.values()) -> [['a','b','c']] """注意此处是一个列表,里面第一个元素正好是一个列表对象"""

pprint 模块--漂亮打印

pprint.pprint()将列表和字典漂亮打印到屏幕

pprint.pformat()将上述要打印到屏幕的文本以字符串的方式返回,利用此可以简单用程序编写python脚本

import pprint

cats = ['a','b','c']

fileObj = open('myCats.py','w')

fileObj.write('cats = ' + pprint.pformat(cats) + '\n')

fileObj.close()

在另一个python脚本中可以这样使用(用Python程序编写更加庞大的Python程序的基础)

from myCats import cats

print cats -> ['a','b','c']

shutil模块相关(shell utilize)(复制,移动,改名,删除)

复制文件和文件夹

shutil.copy(source, destination) 将source处文件复制到destination处

destination如果是文件夹,则新文件名称与原始文件名称保持一致

destination如果是文件名,则以此文件名作为复制后的文件名复制

shutil.copytree(source, destination)将source处文件夹复制到destination处

此时,source和destination都必须是文件夹的路径

文件夹的移动和改名 shutil.move(source, destination) 使用需谨慎~

若destination指定的是文件夹,则必须判定该文件夹是否存在,否则会将路径当作是文件名重命名

若其存在,则将文件移动到该文件夹下

若destination指定的是文件名,若沿途的文件夹均存在,则移动到对应路径下,否则会抛出异常

删除文件 使用需谨慎

os.unlink(file_path) 必须存在且为文件路径,而不是文件夹路径

os.rmdir(dir_path) 必须存在且为文件夹路径,而且必须为空文件夹

shutil.rmtree(dir_path) 必须存在且为文件夹路径,不必为空文件夹

使用时最好在此代码前面加入print将即将被删除的文件打印出来,提供给用户最终决定权

zipfile模块相关 处理zip压缩文件

基本框架

import os

import zipfile

zipObj = zipfile.ZipFile(file_path) -> '生成一个ZipFile对象'

zipObj.namelist() -> '打印zip文件目录树,返回一个list' -> '子方法,返回zip文件的目录list'

spamInfo = zipObj.getinfo('spam.txt') -> 将list中的一个文件名传入子方法getinfo中,可以返回一个ZipInfo对象

ZinInfo对象则保存zip文件每个子文件的有用的信息,如:

spamInfo.file_size

spamInfo.compress_size

解压缩 (ZipFile对象的子方法)

extract():第一个参数为zip文件中的子文件名,如namelist()中的一个文件名,第二个参数为目标文件夹路径

extractall():无参数则解压全部文件到本地,也可以传递一个文件夹路径,在指定文件夹下解压缩

如果指定文件夹不存在,则创建

创建和添加ZIP文件

import zipfile

newZip = zipfile.ZipFile('new.zip','w') '此处可以用追加方式,只需将w改为a'

newZip.write(file_path, compress_type=zipfile.ZIP_DEFLATED) '指定压缩算法'

newZip.close()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值