Python文件操作,OS库

文件操作

  • 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) : 递归地对目录进行更名,也可以对文件进行更名。(不太明白)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值