python学习笔记--文件操作

  • 内置函数

>

center(width)       将字符串居中,并使用空格填充至长度with的新字符串
count(sub[,start[,end]])     返回sub在字符里面出现的次数,startend参数表示范围,可选
encode(encoding='utf-8',errors='strict')         以encoding指定的编码格式对字符串进行编码 endswith(sub[,start[,end]])    检查字符串是否以sub子字符串结束,如果是返回True,否则返回False startend参数表示范围,可选
expandtabs([tabsize=8])     把字符串中的tab符号(\t)转换为空格,如果不指定参数,默认的空格数是tabsize=8 
find(sub[,start[,end]]) 监测sub是否包含在字符串中,如果有则返回索引值,否则返回-1 startend参数表示参数范围,可选
index(sub[,start[,end]] )     跟find方法一样,不过如果sub不在string中会产生一个异常
isalnum()        如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回
False isalpha()      如果字符串至少有一个字符并且所有字符都是字母这返回True,否则返回False 
isdecimal()       如果字符串只包含十进制数字则返回True,否则返回False 
isdigit()      如果字符串只包含数字则返回True,否则返回False 
islower()   如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回True,否则返回False 
isnumeric()      如果字符串包含只包含数字字符,这返回True否则返回
False ispace()     如果字符串中只包含空格,则返回True,否则返回False 
istitle(0    如果字符串是标题化(所有单词都是以大写开始,其余字母均小写)则返回True,否则返回False 
isupper()  如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回True,否则返回False 
join(sub)    以字符串作为分隔符,插入到sub中所有的字符之间 
ljust(width)        返回一个左对齐的字符串,并使用空格填充至长为width的新字符串 
lower()          转换字符串中所有大写字符为小写
partition(sub)    找到字符串sub,把字符串分成一个3元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回('原字符',‘’,‘’)
replace(old,new[,count])       把字符串中的old子字符串替换成new子字符串,如果count指定,则替换不超过count次
rfind(sub[,start[,end]])       类似于find()方法,不过是从右边开始查找
rindex(sub[,start[,end]] )        类型index()方法,不过是从右边开始查找 
rjust(width) 返回一个右对齐的字符串,并使用空格填充至长度为width的新字符串 
rpartition(sub)        类似于partition()方法,不过是从右边开始查找 
rstrip()                      删除字符串末尾的空格
split(sep=None,maxsplit=-1)        不带参数默认是以空格为分隔符切片字符串,如果maxsplit参数有设置,则仅分割maxsplit个字符串,返回切片字符串拼接的列表
splitlines((keepends))      按照'\n'分割,返回一个包含各行作为元素列表,如果keepends参数指定,则返回前keepends行
startswith(prefix[,start[,end]])      检查字符串是否以prefix开头,是则返回True,否则返回Falsestartend参数可以指定范围检查,可选
strip([chars])    删除字符串前边和后边所有格式,chars参数可以定制删除的字符,可选
swapcase()    翻转字符串中的大小写 
title()       返回标题化(所有单词都是以大写开始,其余字母都是小写)的字符串 
translate(tables)      根据table的规则(可以由str.maketrans('a','b')定制) 转换字符串中的字符 
upper()            转换字符串中的所有小写字符为大写 
zfill(width)          返回长度为width的字符串,原字符串右对齐,前边用0填充
  • 文件操作

文件句柄 = file(‘文件路径’, ‘模式’)

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
打开文件的模式有:
r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
a,追加模式。【可读;   不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
r+,可读写文件。【可读;可写;可追加】
w+,写读
a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
rU
r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
rb
wb
ab

文件写入

import time
import random

#打开模式列表:
#w      以写方式打开,
#a      以追加模式打开 (从 EOF 开始, 必要时创建新文件)
#r+     以读写模式打开
#w+     以读写模式打开 (参见 w )
#a+     以读写模式打开 (参见 a )
#rb     以二进制读模式打开
#wb     以二进制写模式打开 (参见 w )
#ab     以二进制追加模式打开 (参见 a )
#rb+    以二进制读写模式打开 (参见 r+ )
#wb+    以二进制读写模式打开 (参见 w+ )
#ab+    以二进制读写模式打开 (参见 a+ )
f = open('tpm.txt', 'a+')

for i in range(10) :
    f.write(time.strftime('%Y-%m-%d %H:%M:%S'))
    f.write(' ' + str(random.randint(0, i)) + '\n')

f.close()

拓展:
f.read([size])       #size为读取的长度,以byte为单位
f.readline([size])   #读一行,如果定义了size,有可能返回的只是一行的一部分
f.readlines([size])  #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
f.write(str)         #把str写到文件中,write()并不会在str后加上一个换行符
f.writelines(seq)    #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
f.close()            #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。  如果一个文件在关闭后还对其进行操作会产生ValueError
f.flush()            #把缓冲区的内容写入硬盘
f.fileno()           #返回一个长整型的”文件标签“
f.isatty()           #文件是否是一个终端设备文件(unix系统中的)
f.tell()             #返回文件操作标记的当前位置,以文件的开头为原点
f.next()             #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
f.seek(offset[,whence])   #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
f.truncate([size])  #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

文件读取

f = open('tpm.txt')
# read方式读取
s = f.read()
print(s, '\n\n\n')
print(f.tell())
#上面读取完后指针移动到最后,通过seek将文件指针移动到文件头
f.seek(0)
#使用readline每次读取一行
while(True):
    line = f.readline()
    print(line)
    if(len(line) == 0):
        break

f.close()

文件目录操作

#os模块,处理文件和目录的一系列函数
import os

#打印当前目录下的所有文件 非递归
print(os.listdir(os.getcwd()))

#切换目录为当前目录
os.chdir('.')

#判断目标是否存在,不存在则创建
if(os.path.exists('./osdirs') == False):
    os.mkdir("./osdirs")

#重命名文件或目录名
if(os.path.exists("./os") == False) :
    os.rename("./osdirs", "./os")

#rmdir删除目录,需要先清空文件中的子目录或文件夹
#removedirs可多层删除目录(需要目录中无文件) makedirs可多层创建目录
if(os.path.isdir("./os")) :
    os.rmdir("./os")

#删除文件
if(os.path.exists('./tpm.txt')):
    os.remove('./tpm.txt')


os.name()        获取当前使用的操作系统,nt是windows posix是linux或者Unix 
os.getcwd()      获取当前工作路径
os.remove()      删除指定的文件 
os.removedirs()  删除指定的文件夹
os.system()      运行系统命令 
os.mkdir()       创建一个新的目录
os.chdir()       切换工作目录 
os.listdir       返回指定目录下的所有目录和文件
os.linesep       文件中分割行的字符串 
os.sep           文件路径名的分隔符 
os.curdir        当前工作目录的字符串名称 
os.pardir       父目录字符串名称 方法 
os.remove()     删除文件 
os.rename()     重命名文件 
os.walk()       生成目录树下的所有文件名 
os.chdir()      改变目录 
os.mkdir/makedirs   创建目录/多层目录 
os.rmdir/removedirs 删除目录/多层目录 
listdir()       列出指定目录的文件 
getcwd()        取得当前工作目录(current work directory) 
chmod()         改变目录权限 
os.path.basename()  去掉目录路径,返回文件名 
os.path.dirname()   去掉文件名,返回目录路径 
os.path.join()      将分离的各部分组合成一个路径名 
os.path.split()     返回(dirname(),basename())元组 
os.path.splitext()  (返回filename,extension)元组 
os.path.getatime\ctime\mtime    分别返回最近访问、创建、修改时间 
os.path.getsize()       返回文件大小 
os.path.exists()        是否存在 
os.path.isabs()         是否为绝对路径 
os.path.isdir()         是否为目录 
os.path.isfile()        是否为文件

by 2016.3.18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值