Python--File

open(filename, mode='r+')方法用于打开一个文件,并返回文件对象。
f = open(r'C:/Users/admin/Desktop/123.txt',"r+") #注意路径中的字符,r表示路径
print (f.name)
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
 
假设文件 runoob.txt 的内容如下:
这是第一行111
这是第二行222
这是第三行333
这是第四行444
这是第五行555
 
fileObject.read(size)方法用于从文件读取指定的字节数,如果未给定或为负则读取所有。
f = open("runoob.txt", "r+")
print (f.name) #"runoob.txt
str = f.read(10)
print (str) #这是第一行 f.close()
 
注意:要读取二进制文件,比如图片、视频等等,用'rb'模式打开文件即可
遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。
遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。
最简单的方式是直接忽略: f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
 
fileObject.readline(size)方法用于从文件读取整行,包括 "\n" 字符。
f = open("runoob.txt", "r+")
line = f.readline()
print (line) #这是第一行111
line = f.readline(2)#这是
print (line)
f.close()
 
fileObject.readlines( )方法用于读取所有行(直到结束符 EOF)并返回列表
f = open("runoob.txt", "r")
for line in f.readlines():
  line = line.strip()
  print (line)
f.close()
 
fileObject.tell()方法返回文件的当前位置,即文件指针当前位置。
f = open("runoob.txt", "r+")
line = f.readline()
print (line) #这是第一行111
pos = f.tell()
print (pos) #19
f.close()
 
fileObject.seek(offset[, whence])方法用于移动读取指针到指定位置。
f = open('workfile', 'rb+')
f.write(b'0123456789abcdef')
f.seek(5)      # 移动到文件的第六个字节
f.read(1) #b'5'
f.seek(-3, 2)  # 移动到文件倒数第三个字节
f.read(1) #b'd'
 
fileObject.truncate( [ size ])方法用于从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断
f = open("runoob.txt", "r+",errors='ignore')
f.truncate(10)
str = f.read()
print (str)
f.close()
 
fileObject.write( [ str ])方法用于向文件中写入指定字符串。
如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错
f = open("runoob.txt", "r+")
str = "6:www.runoob.com" # 在文件末尾写入一行
f.seek(0, 2)
line = f.write( str )
f.seek(0,0)
for index in range(6):
line = next(f)
print (index, line))
f.close()
 
fileObject.writelines( [ str ])方法用于向文件中写入一序列的字符串。
f = open("test.txt", "w")
seq = ["测了个试 1\n", "测了个试 2"]
f.writelines( seq )
f.close()
 
fileObject.flush()法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区
f = open("runoob.txt", "wb")
f.flush()
f.close()
 
fileObject.fileno()方法返回一个整型的文件描述符,可用于底层操作系统的 I/O 操作。
f = open("runoob.txt", "wb")
fid = f.fileno()
print (fid)
f.close()
 
一般来说推荐以下方法:
#写
with open('test.txt', 'w', encoding='utf-8') as f:
f.write('test')
#读
with open('test.txt', 'r', encoding='utf-8') as f:
f.readlines()
执行完自动close,避免忘记关闭文件导致资源的占用。
 
三、目录操作方法大全
1.创建目录
os.mkdir("file")                   
2.复制文件:
shutil.copyfile("oldfile","newfile")        #oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile")            #oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
3.复制文件夹:
4.shutil.copytree("olddir","newdir")    #olddir和newdir都只能是目录,且newdir必须不存在
5.重命名文件(目录)
os.rename("oldname","newname")    #文件或目录都是使用这条命令
6.移动文件(目录)
shutil.move("oldpos","newpos")   
7.删除文件
os.remove("file")
8.删除目录
os.rmdir("dir")                             #只能删除空目录
shutil.rmtree("dir")                      #空目录、有内容的目录都可以删
9.转换目录
os.chdir("path")                          #换路径
 
python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法。
操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中,这一点要注意一下。
1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
2.返回指定目录下的所有文件和目录名:os.listdir()
3.函数用来删除一个文件:os.remove()
4.删除多个目录:os.removedirs(r"c:\python")
5.检验给出的路径是否是一个文件:os.path.isfile()
6.检验给出的路径是否是一个目录:os.path.isdir()
7.判断是否是绝对路径:os.path.isabs()
8.检验给出的路径是否真地存:os.path.exists()
9.返回一个路径的目录名和文件名:os.path.split() 
例子:
代码如下:
os.path.split('/home/swaroop/byte/code/poem.txt') 结果:('/home/swaroop/byte/code', 'poem.txt')
10.分离扩展名:os.path.splitext()
11.获取路径名:os.path.dirname()
12.获取文件名:os.path.basename()
13.运行shell命令: os.system()
14.读取和设置环境变量:os.getenv() 与os.putenv()
15.给出当前平台使用的行终止符:os.linesep Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
16.指示你正在使用的平台:os.name 对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
17.重命名:os.rename(old, new)
18.创建多级目录:os.makedirs(r"c:\python\test")
19.创建单个目录:os.mkdir("test")
20.获取文件属性:os.stat(file)
21.修改文件权限与时间戳:os.chmod(file)
22.终止当前进程:os.exit()
23.获取文件大小:os.path.getsize(filename)

posted @ 2020-11-13 18:22  盲仔不瞎忙  阅读(72)  评论(0编辑  收藏  举报