python中文件操作

1.文件的打开或者创建
  f = open('数据.txt', 'w', encoding='utf-8') # 只读方式打开文件
  f. write('内容')
  f. read(读的字符个数)

2.文件的信息
①查找操作的文件名
print(f. name)
②访问权限
print(f. mode)
③编码格式
print(f. encoding)  # cp936  -- jbk编码格式的存储位置:第936页
④是否可读
print(f. readable() )
⑤是否可写
print(f. writable() )
⑥是否关闭
print( f.closed)

3.文件的指针
  seek(偏移量,whence)  seek(5,0)
  # 偏移量:距离whence值的字符数
  # whence:位置:0:文件开头 1:当前位置 2:文件结尾
  f = open('数据.txt', 'r', encoding='utf-8')
  print(f.tell())
  f.seek(5, 0)
  f1 = f.read(3)  #  代表读几个
  f.close()
  print(f1)

4.文件写入后清空缓存,节约内存
# 清空缓冲区(释放缓冲区的占用,把这个区域分配给其他数据),写入数据到硬盘
f. flush()

5.文件与目录操作
import os
①文件操作
重命名  rename(目标文件名字,新的文件名)
os.rename('2.txt','2new.txt')
os.rename('aaa','bbb')
②删除文件 remove()
os.remove('2new.txt')
③目录操作
路径:存储位置 。相对路径(以当前位置出发)  和  绝对路径(以盘符出发的路径形式/根目录)
     Ⅰ. getcwd() 某个文件的存储路径
aa = os.getcwd()
print(aa)
     Ⅱ. listdir()  返回一个列表,包含这个路径下的所有文件
list1 = os.listdir(aa)
print(list1)
     Ⅲ.os. mkdir('aaa')  #创建文件夹
aaa/bbb
      Ⅳ.os. chdir(路径)  #改变默认目录到指定路径,假如当前路径下有文件1,2,3,os.chdir(1)就将路径制定到1文件
夹下;os.chdir(' ./')代表当前文件所在路径;os.chdir(' ../')代表当前文件上层所在路径;os.chdir( '/')代表当前文件根目录
file_path = os.getcwd()
print(file_path)
os.mkdir('bbb')
print(os.getcwd())
    Ⅴ.目录树
os. makedirs('111/222/333/444')  # 生成目录树
os. rmdir('aaa/bbb')  # 删除文件夹
os.rmdir('111')  # 目录不为空则不能删除
os.removedirs('111')  # 错误,本能删除目录树
import shutil
shutil.rmtree('111')  # 删除目录树
 
6.批量修改文件名
# 文件批量改名
import os
file = os.getcwd()
print(file)
file_list = os.listdir()
print(file_list)
for file in file_list:  # 添加修改内容
    new_name = '副本' + file
    os.rename(file, new_name)


for file in file_list:  # 改回修改前的内容
    new_name = file[2:]
    os.rename(file, new_name)
7.文件拷贝
# 文件拷贝
import os
file_list = os.listdir('./')
print(file_list)
name = input('请输入要备份的文件名字:')
if name in file_list:
    index = name.rfind('.')   # 从右检索文件名,记录文件名最后一个点的下标
    copy_name = name[:index] + '-附件' + name[index:]
    copy = open(copy_name, 'w', encoding='utf-8')  # 用于备份新文件
    file = open(name, 'r', encoding='utf-8')  # 用于读源文件
    while True:
        data = file.read(1024 * 1024)   # 防止文件过大,慢慢读
        if len(data) == 0:  # 读不到,说明没有数据了,跳出循环
            break
        else:
            copy.write(data)  # 否则写入备份文件
    copy.close()
    file.close()
else:
    print('文件不存在,重新输入!')

注意:如果是视频,音频等二进制文件,读写方式改为:wb,rb

猜你喜欢

转载自blog.csdn.net/weixin_31449201/article/details/79986865