文件操作
readline([size]) : 不指定size就读取一行,包括换行符,指定size就读取size个字节或者遇到换行符终止。
seek(offset[, position]) : 移动文件指针,position 0 表示文件首,1表示当前位置,2表示文件尾
readlines() : 读取所有行,包括换行符,保存在列表中
file.writelines(itera) : 直接串在一起输出,中间没有任何分隔符,换行符需要自己加
write(str/bytes) : 写入文件,如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not 'str'
- 用with操作文件,在with语句执行后,file会被自动关闭(close())
with open() as file:
...
# 自动执行file.close()
- while 后的条件不能写赋值语句(貌似赋值语句没有返回值?)
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,返回enumerate 类型for i in enumerate(list):
print(i)
##
(0, 'a')
(1, 'b')
(2, 'c')
# Python 文件操作
## 打开文件
input = open("./filetest_utf8.data", encoding="utf-8")
input2 = open("./filetest_gbk.data", encoding="gbk")
str = input.read(5) # 读取指定字节
print(str) # 汉字也被视为一个字节==》这是第一行
str = input.readline(5) # 会自动记忆文件指针
print(str)
# 按行读完一个文件
str = input.readline() # 读取一行,包括换行符
while "" != str:
print(str, end="")
str = input.readline()
input.seek(0,0)
strs = input.readlines() # 读取所有行,保存在列表中包括换行符
print(strs)
input.close()
input2.close()
# 接下来,使用文件写操作
## 打开文件,在文件末尾追加一行
file = open("filetest_utf8.data", mode="r+", encoding="utf-8") # 读写模式打开文件,文件指针位于文件首
str = "\n这是程序写入的第六行"
file.seek(0, 2) # 指向文件尾。偏移量为0.使用mode=a+也可以达到同样的效果
file.write(str)
## writelines(可迭代对象)
file.seek(0, 2)
strs = ['由writelines写入1', '由writelines写入2', '由writelines写入2']
file.writelines(strs) # 直接串在一起输出,中间没有任何分隔符,换行符需要自己加
file.seek(0, 0) # 文件指针再回到文件头
str = file.readline()
while str != "":
print(str, end="")
str = file.readline()
给文件加行号
file = open("filetest_utf8.data", encoding="utf-8", mode="r+")
lines = file.readlines()
file.seek(0, 0) # 从文件头开始覆盖
for i, line in enumerate(lines):
print(i,line)
tempstr = str(i) + ": "+line
file.write(tempstr)
file.close()
Python OS库
os.chdir(path) : 改变当前路径
os.getcwd() : 返回当前路径
os.chmod(path, mode) : 更改权限
os.listdir(path) : 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 ‘.’ 和’…’
os.mknod(filename[, mode=0600[, device=0]]) : 创建文件(windows不支持,使用with open(filename,mode="w") as fp )
os.makedirs() : 方法用于递归创建目录。
os.mkdir(path[, mode]) : 创建一个权限为mode的文件夹.默认的 mode 是 0777
os.open(file, flags[, mode]) : 打开一个文件(flags: os.O_RDONLY : 以只读的方式打开)
os.read(fd,n) : 从文件fd(用os.open()打开)中读取n的字节
os.write(fd, str) : 写入字符串到文件描述符 fd 中. 返回实际写入的字符串长度。
os.remove(path) : 删除文件。如果是目录就报错
os.removedirs(path) : 递归删除目录,目录要为空(?)
shutil.rmtree(path) : 递归删除非空文件夹
os.unlink(path) : 删除文件
os.rmdir(path) : 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。
os.rename(src, dst) : 重命名文件或目录,从 src 到 dst。看起来类似于mv命令
os.renames(old, new) : 递归地对目录进行更名,也可以对文件进行更名。(不太明白)
|