博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python之路--文件操作
阅读量:7259 次
发布时间:2019-06-29

本文共 2808 字,大约阅读时间需要 9 分钟。

一 . 文件操作

# open 打开# f = open(文件路径, mode="模式", encoding="编码格式") 最最底层操作的就是bytes# 打开一个文件的时候获取到的是一个文件句柄.# 首先需要有一个 "alex和wusir的故事"的文档f = open("alex和wusir的故事", mode="r", encoding="utf-8")# 读取内容content = f.read()  # 全部都读取出来print(content)# 坑:c2 = f.read() # 读取不到内容. 因为上面已经读取完毕. 光标在末尾print("c2", c2)# 良好的习惯f.close() # 关闭连接# 也可以用with对文件进行操作with open("alex和wusir的故事", mode="r", encoding="utf-8") as f:  f.read()

 

 

 

二 . 文件路径

 
1. 相对路径: 相对于当前程序所在的文件夹, 如果再文件夹内. 随便找. 直接写名字      如果不在这个文件夹内. 可能需要出文件夹或者进文件夹          出文件夹  ../          进文件夹  文件夹/ 2. 绝对路径: 从磁盘根目录寻找路径 (有问题,比如说发给用户的是在D盘下的文件但是用户没有D盘就会出现问题)          只有在记录日志的时候可以用到绝对路径日志: 程序运行过程中记录的信息.

三 . mode 的各个功能

  mode: r

f = open("乔峰会使用降龙十八掌.txt", mode="r", encoding="utf-8")print(f.read(5))  # 读取5个字符print(f.read(5))  # 继续读5个print(f.readline().strip()) # 换行符为分割, strip()可以去掉换行. 读取到的内容第一件事就是去掉空白print(f.readline()) # 换行符为分割f.close()print("周润发", end="胡辣汤")print("周星驰")print(f.readlines())  #  一次性把文件中的内容读取到列表中.

 

  mode: w

# 每次用w模式打开文件, 都会清空这个文件(坑)f = open('胡辣汤', mode="w", encoding="utf-8") # 可以帮我们创建文件f.write('河南特色\n')f.write("东北特色\n")f.write('陕西特色\n')# 好习惯f.flush()  # 刷新管道, 把数据写入文件f.close()

 

 

  mode: a

f = open("葫芦小金刚", mode="a", encoding="utf-8") # a, append 追加, 在文件的末尾写入内容f.write("你叫什么名字啊?")f.read() # not readablef.flush()f.close()

 

  mode: +

f = open("葫芦小金刚", mode="r+", encoding="utf-8")content = f.read(2)  # 顺序必须先读, 后写# r+特有的深坑:不论读取内容的多少. 只要你读了. 写就是在末尾f.write('五娃')print(content)一上来会清空文件. 没人用f = open("葫芦小金刚", mode="w+", encoding="utf-8")# content = f.read(2)  # 顺序必须先读, 后写# # r+特有的深坑:不论读取内容的多少. 只要你读了. 写就是在末尾# f.write('五娃')f.write("又能吐火的, 有能吐水的.")# 移动光标f.seek(0) # 移动到开头s = f.read()print("=========>", s)追加写读, 光标在末尾. 所有的写都是在末尾f = open("葫芦小金刚", mode="a+", encoding="utf-8")f.write("机器葫芦娃召唤神龙, 高喊.我代表月亮消灭你!")f.seek(0)s = f.read()print("=========>", s)

 

四 . 文件复制

f1 = open("c:/wuyanzu.jpg", mode="rb")f2 = open("d:/wuyanzu.jpg", mode="wb")for line in f1: # line是从f1中读取的内容    f2.write(line)  # 把读取的内容原封不动的写出去f1.close()f2.flush()f2.close()

 

 五 . seek 和 tell

f = open("胡辣汤", mode="r+", encoding="utf-8")f.seek(0,2) # 移动到末尾content = f.read(5)print(content)f.seek(0) # 移动到开头print(f.read())print(f.tell())  # 字节f.seek(3)print(f.read())

 

 六 . 文件修改

# 需求: 把好人换成呵呵# 必须:#   1. 先从文件中读取内容#   2. 把要修改的内容进行修改#   3. 把修改好的内容写人一个新文件#   4. 删除掉原来的文件#   5. 把新文件重命名成原来的文件的名字# 导入os模块  os表示操作系统import os# f = open("夸一夸alex", mode="r", encoding="utf-8")# f2 = open("夸一夸alex_副本", mode="w", encoding="utf-8")# with会自动的帮我们关闭文件的链接with open("夸一夸alex", mode="r", encoding="utf-8") as f, \     open("夸一夸alex_副本", mode="w", encoding="utf-8") as f2:    for line in f:        if "好人" in line:            line = line.replace("好人", "sb")        f2.write(line)# time.sleep(3) # 程序暂停3秒# 删除原来文件os.remove("夸一夸alex")# 重命名副本为原来的文件名os.rename("夸一夸alex_副本", "夸一夸alex")

 

  

 

转载于:https://www.cnblogs.com/attila/p/10070625.html

你可能感兴趣的文章
leetcode 2. 两数相加
查看>>
第二周进度报告
查看>>
Hadoop集群(一) Zookeeper搭建
查看>>
JDBC事务,银行转账,货物进出库等等。
查看>>
oc-Foundation框架-NSString-常用方法
查看>>
算法:管窥算法-查找旋转数组(即进行了左移或右移的数组)的最小值
查看>>
linux 查看进程和端口
查看>>
服务器端汉字乱码
查看>>
学习笔记之Data analysis
查看>>
Linux系统中“动态库”和“静态库”那点事儿【转】
查看>>
Linux磁盘空间不足
查看>>
Java项目怎么使用Swagger生成API文档?
查看>>
LeetCode OJ:Bulls and Cows (公牛与母牛)
查看>>
吴宁川-阿里云创造者写了《在线》,这是一本怎样的书?
查看>>
CRB and Candies LCM 性质
查看>>
zgg与占卜师
查看>>
WorkStream构想
查看>>
C#正则表达式验证
查看>>
二维数组函数参数传递 –转
查看>>
c# 自定义解析JSON字符串数据
查看>>